Android代码实现重启系统

问题描述:

在某种情况下,触发重启函数,重启安卓系统

问题分析:

涉及到Android系统的重启,必然需要申请root权限。

申请权限则有代码申请和将应用打包成系统应用两种方式。代码申请的话必然需要设备root,并且会弹框告知用户是否同意;封装成系统app,添加android.uid.system,再进行系统签名。
我根据我们的需求,采用的是后者。

Android并没有给出明显的重启系统的方法给我们调用,反倒是可以用使用Runtime的shell命令来实现重启系统

解决办法

  1. 在manifest中添加android.uid.system
  2. 添加权限?(这里记不清了。小伙伴们可以在调试报错的时候加上)
  3. 封装重启方法,核心代码如下
((ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE))
                    .killBackgroundProcesses(context.getPackageName());
Runtime.getRuntime().exec("su");
Runtime.getRuntime().exec("reboot");
  1. 系统签名你的应用。可参照我的另一篇文章Android应用添加系统签名
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 175,098评论 25 709
  • Android 是一个特权分离(privilege-separated)操作系统,在其中每个应用都以一个不同的系统...
    DanieX阅读 9,530评论 0 3
  • 快乐的小秘密 快乐是个调皮 鬼 偷偷来偷偷走 她是个自在小精灵 人生风景无限好 带着快乐向前跑 让快乐在你屁股后边...
    大爱于华阅读 1,176评论 0 0
  • 我想放弃周先生很久了。 是从哪天开始有这个念头的呢?具体的日子我也想不起来,我只知道,我对他不再抱有任何希望。 我...
    一记沉年阅读 3,218评论 0 1
  • 景点篇 我们去了两天,安排的是第一天下午和晚上去太平山看夜景,第二天上午和下午去海洋公园,第二天晚上回深圳。这...
    家私陈阅读 3,060评论 0 1