問題描述:
在某種情況下,觸發(fā)重啟函數(shù),重啟安卓系統(tǒng)
問題分析:
涉及到Android系統(tǒng)的重啟,必然需要申請(qǐng)root權(quán)限。
申請(qǐng)權(quán)限則有代碼申請(qǐng)和將應(yīng)用打包成系統(tǒng)應(yīng)用兩種方式。代碼申請(qǐng)的話必然需要設(shè)備root,并且會(huì)彈框告知用戶是否同意;封裝成系統(tǒng)app,添加android.uid.system,再進(jìn)行系統(tǒng)簽名。
我根據(jù)我們的需求,采用的是后者。
Android并沒有給出明顯的重啟系統(tǒng)的方法給我們調(diào)用,反倒是可以用使用Runtime的shell命令來實(shí)現(xiàn)重啟系統(tǒng)
解決辦法
- 在manifest中添加
android.uid.system - 添加權(quán)限?(這里記不清了。小伙伴們可以在調(diào)試報(bào)錯(cuò)的時(shí)候加上)
- 封裝重啟方法,核心代碼如下
((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE))
.killBackgroundProcesses(context.getPackageName());
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("reboot");
- 系統(tǒng)簽名你的應(yīng)用??蓞⒄瘴业牧硪黄恼?a href="http://www.itdecent.cn/p/5984c81a369a" target="_blank">Android應(yīng)用添加系統(tǒng)簽名