問題描述:
在某種情況下,觸發(fā)重啟函數现恼,重啟安卓系統(tǒng)
問題分析:
涉及到Android系統(tǒng)的重啟,必然需要申請root權限始锚。
申請權限則有代碼申請和將應用打包成系統(tǒng)應用兩種方式喳逛。代碼申請的話必然需要設備root,并且會彈框告知用戶是否同意姐呐;封裝成系統(tǒng)app典蝌,添加android.uid.system
,再進行系統(tǒng)簽名鸠澈。
我根據我們的需求截驮,采用的是后者。
Android并沒有給出明顯的重啟系統(tǒng)的方法給我們調用涵妥,反倒是可以用使用Runtime
的shell命令來實現重啟系統(tǒng)
解決辦法
- 在manifest中添加
android.uid.system
- 添加權限眶熬?(這里記不清了。小伙伴們可以在調試報錯的時候加上)
- 封裝重啟方法拳缠,核心代碼如下
((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE))
.killBackgroundProcesses(context.getPackageName());
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("reboot");
- 系統(tǒng)簽名你的應用窟坐∶嗥#可參照我的另一篇文章Android應用添加系統(tǒng)簽名