0权限重启手机
1、http://www.grepcode.com/ 搜 reboot broadcast final class RebootRequestReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context c, Intent intent) {
mReqRebootNoWait = intent.getIntExtra("nowait", 0) != 0; //重启是否等待
mReqRebootInterval = intent.getIntExtra("interval", -1); //重启手机多少次
mReqRebootStartTime = intent.getIntExtra("startTime", -1); //什么时候重启手机
mReqRebootWindow = intent.getIntExtra("window", -1);//重启手机是否有窗体的提醒
mReqMinScreenOff = intent.getIntExtra("minScreenOff", -1);
mReqMinNextAlarm = intent.getIntExtra("minNextAlarm", -1);
mReqRecheckInterval = intent.getIntExtra("recheckInterval", -1);
EventLog.writeEvent(EventLogTags.WATCHDOG_REQUESTED_REBOOT,
mReqRebootNoWait ? 1 : 0, mReqRebootInterval,
mReqRecheckInterval, mReqRebootStartTime,
mReqRebootWindow, mReqMinScreenOff, mReqMinNextAlarm);
checkReboot(true);
}
}
|
方式一:伪装成系统应用重启手机-只能用在原生手机上面 1、在清单文件中添加属性android:sharedUserId="android.uid.system" 2、用系统签名给应用程序签名,伪装成系统应用 3、但签名后的应用只能在原生的Android上使用 4、因为定制的android系统,把下面两个平台签名文件给改了 ,导致应用签名不一致,安装不上。 platform.x509.pem platform.pk8 |
方式二: |
问题1: 直接报Permission Denied,没有提示需要什么具体的权限,因为这个应用不能声明该权限,只能是系统应用才能声明。 解决:在清单文件中,增加属性节点android:sharedUserId="android.uid.system" <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="cn.zengfansheng.reboot" android:sharedUserId="android.uid.system" android:versionCode="1" android:versionName="1.0" > |
问题2:但在部署的时候又出现了下面的问题 Installation error: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE Please check logcat output for more details. Launch canceled! 解决: CERT.SF:保护应用程序的完整性 CERT.RSA:保存着开发者的信息,唯一标识标识应用程序的开发者 a) 将上面应用的META-INF文件给删除,然后再部署到手机上去,然后报错了,因为没有签名的应用,不能装到手机上 b) 使用signapk给应用签名 c)切换到signapk目录,执行命令:java -jar signapk.jar 可以看到命令的格式 d) 执行命令:java -jar signapk.jar platform.x509.pem platform.pk8 reboot.apk newreboot.apk f)小米手机安装失败 Failure [INSTALL_FAILED_SHARED_USER_INCOMPATIBLE] g) 系统中的签名文件 \build\target\product\security |
|