由于工作需求,测试GG火火找我帮忙弄个可多次循环重启功能的小apk,所以花了点时间搞了下这个问题,其中有参考到以下文章:
http://blog.csdn.net/randyrhoads/article/details/7986650
1、遇到的第一个问题
没有权限。所以参考了上述链接中的方法, 在AndroidManifest.xml文件下添加android:sharedUserId="android.uid.system" 。
2、遇到第二个问题
重启后没接收到广播。按理说我在AndroidManifest.xml文件下已经注册了
<receiver android:name="com.lomo.reboottest.RebootReceiver">
<intent-filter >
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
可是当我在xml文件中再添加<category android:name="android.intent.category.LAUNCHER" />这一句,并且在java文件中执行intent.getAction().equals("android.intent.action.BOOT_COMPLETED")的判断他才起作用,有点诡异;
3、遇到第三个问题
就是我自己的问题了。我是用SharedPreferences来保存需要重启的次数的,但是我在代码中先执行重启操作,在保存数据(没重启一次,次数要减少一次),导致执行改程序一直无限重启。应该先保存数据再执行重启操作。
关于添加系统签名所需要的文件我也已经打包好在压缩包里面了,具体源码也在那里。由于是只小菜鸟,缩写的代码有很多问题和冗余的,部分的东西自己也还没理解,所以请大家多多指教,非常感谢!
系统签名文件:http://download.csdn.net/detail/j236027367/8204127
循环重启功能的实现源码:http://download.csdn.net/detail/j236027367/8204141