最近在实现安卓设备重启的功能,最初利用下面方法实现的
try {
Runtime.getRuntime().exec("su -c reboot");
} catch (IOException e) {
Logger.d(Constant.TAG,"reboot:"+e.toString());
e.printStackTrace();
}
在某些设备上是可以用的,但是在另一台定制厂商的设备上没有效果,我们按照他们的建议,换成了下面方式
PowerManager pManager = (PowerManager) Global.mContext.getSystemService(Context.POWER_SERVICE);
pManager.reboot("重启");
但是这种方法需要系统权限,而需要系统权限的话系统签名是个很重要的问题。下面推荐一篇博客实现系统签名,写的非常清晰。Android 系统签名实现的三种方式。我用的第二种方式,media.pk8和platform.x509.pem两个文件是厂商给我的。另外说一下,文档里有一个命令
java -jar signapk.jar platform.x509.pem platform.pk8 old.apk new.apk
这里的old.apk需要写全路径,哪怕是在同一目录下。否则不成功。