这几天在做一项目,开机即开启服务,在服务里检测设备的系统版本是不是最新的,有新版本时,弹一个对话框提醒用户更新系统。
好死不死,真机我用的小米2进行的测试,然后问题来了。
具体的怎么开机就能启动服务不是很难,添加权限,注册开机广播,注册服务,按部就班的来就行,在我这个笔记中不再多记录,贴一个网址,里面有详细的记录,以后自己方便找到:Android问题解决之小米手机接收不到开机广播 (侵立删)。
但是,正像这个作者所说的,这样在小米手机上跑,有问题,我的问题具体的是:
我注册了开机广播,也注册了关机广播,在不同的广播里打印不同的日志。
调试的时候,先用模拟器:run起来以后,我关机,会接收到关机广播;然后再开机,开机可以接收到开机广播(重启也可以达到相同的效果)。
但是用真机小米2测试时:run起来后,关机可以收到关机广播,但是关机后再开机,是绝对不会收到开机广播了。
在遇到上面的这个帖子之前,我看了很多帖子:看到3.1以后,的确是开机广播不会被第三方应用接收到,只能是系统应用能接收到。
还看到了一个自称解决了3.0版本以上应用接收不到开机广播问题的人发的帖子,地址:解决android3.0版本以上应用接收不到开机广播问题 (侵立删)
但是这个方法我没有试,我懒。
后来看到了第一个网址里作者说的方法,去试着操作了一下,安全中心--授权管理--自启动管理--对本app添加自启动授权,在添加后,再次在小米2上run起来,没毛用。
再然后,给领导说了,我特么不行啊,怎么才能实现真正的开机自启服务啊。。。然后,领导说,我们是OS部门啊,我们自己做系统啊,你只要在模拟器上实现了开机即可开启服务,就可以了,以后开机启动的广播我们甚至还要自己定义。。。卧槽。。。然后问题就解决了。。。对了,模拟器用的谷歌的四儿子,5.1.1的版本,运行起来没毛病。
再弄一个图:
-----------update--------0825----------
这两天在模拟器上跑,然后老是出问题。
具体的问题是:当程序跑起来以后,开机关机广播时而收到,时而收不到,然后很郁闷,因为自己做的东西都在广播里,你收不到广播,也不能测试出来自己写的代码。
问题的解决:后来的确没办法了,因为功能清单列表里都是粘贴过来的。。。等等,粘贴过来的,,,那我现在重新手打一次试试。重新打权限,重新注册开机关机广播,重新配置服务,再在模拟器上跑起来,没毛病。如果有人看到了这个笔记,遇到了相似的问题,可以给你一个思路。。。