Android实现关机重启的方法

实现系统重启的APK需要system的权限,在AndroidManifest.xml中增加android:sharedUserId="android.uid.system",再修改签名即可;

权限提升方法:
一种方法:
1、在AndroidManifest.xml中的manifest节点中添加 android:sharedUserId="android.uid.system"。
2、添加后程序在虚拟机上是不可以直接用的。但可以用eclipse编译成apk。
3、(这一步经验证不执行即可)编译成apk后用压缩工具打开apk,把META-INF目录中的CERT.SF、CERT.RSA 两个文件删除。
4、使用android自带的签名工具signapk.jar 以及源码中的platform.x509.pem,platform.pk8 对apk进行重新签名。
执行:java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk 执行后new.apk即为签名后的文件。
(注:执行命令时所有文件这里放在同一目录下,如果不在同一目录请修改路径)。
文件platform.x509.pem和platform.pk8我们可以在源码的 build/target/product/security中找到。signapk.jar 可以编译build/tools/signapk/ 得到。
5、签名后就可以安装使用了
第二种方法: 1、在AndroidManifest.xml中的manifest节点中添加 android:sharedUserId="android.uid.system"。
2、直接在源码中编译,Android中加入LOCAL_CERTIFICATE := platform
两法方法签名后可能会导致不能操作sdcard目录下的文件。

需要提升权限的操作: 1、使用PowerManager来实现:

PowerManager pManager=(PowerManager) mContext.getSystemService(Context.POWER_SERVICE);   
pManager.reboot("");

2、发送REBOOT广播:

private void rebootSystem(){
 Intent reboot = new Intent(Intent.ACTION_REBOOT);
 reboot.putExtra("nowait", 1);
 reboot.putExtra("interval", 1);
 reboot.putExtra("window", 0);
 sendBroadcast(reboot);
}

results matching ""

    No results matching ""