问题描述:
在某种情况下,触发重启函数,重启安卓系统
问题分析:
涉及到Android系统的重启,必然需要申请root权限。
申请权限则有代码申请和将应用打包成系统应用两种方式。代码申请的话必然需要设备root,并且会弹框告知用户是否同意;封装成系统app,添加android.uid.system
,再进行系统签名。
我根据我们的需求,采用的是后者。
Android并没有给出明显的重启系统的方法给我们调用,反倒是可以用使用Runtime
的shell命令来实现重启系统
解决办法
- 在manifest中添加
android.uid.system
- 添加权限?(这里记不清了。小伙伴们可以在调试报错的时候加上)
- 封装重启方法,核心代码如下
((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE))
.killBackgroundProcesses(context.getPackageName());
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("reboot");
- 系统签名你的应用。可参照我的另一篇文章Android应用添加系统签名