最近实验室项目需要集成一个Android系统重启的功能,于是上网调研了一番,发现系统重启是Android保留的系统权限,我们需要将普通应用提升为系统应用(可参考我的另一篇博文:基于Android源码编译系统应用),然后通过代码来实现重启,代码实现主要有以下3种方法:
1. 通过代码执行命令行
String cmd = "su -c reboot";
try {
Runtime.getRuntime().exec(cmd);
} catch (IOException e) {
e.printStackTrace();
}
2. 发送 reboot 广播
需要在 AndroidManifest.xml 中申请REBOOT权限: <uses-permission android:name="android.permission.REBOOT"/> 。
实现代码如下:
Intent reboot = new Intent(Intent.ACTION_REBOOT);
reboot.putExtra("nowait", 1);
reboot.putExtra("interval", 1);
reboot.putExtra("window", 0);
sendBroadcast(reboot);
3. 通过 PowerManager 服务
PowerManager pManager=(PowerManager) getSystemService(Context.POWER_SERVICE);
pManager.reboot("重启");