有没有在开发开机自启动的应用中,遇到这样的问题,自己调试测试,开机自启动没任何问题,发给测试就是开机不启动。是不是曾经因为这个问题,怀疑过测试、怀疑过人生,我怀疑过,看看官网就知道了。
Android 3.1开始,Android系统默认的为广播添加了两个标识:
FLAG_INCLUDE_STOPPED_PACKAGES(表示包含未启动的App)
FLAG_EXCLUDE_STOPPED_PACKAGES(表示不包含未启动的App)
当我们app安装后,未启动,则标记为stoped状态,只有至少手动打开一次,才能改变状态,接收特定广播,也是为了防止广播无意开启未启动应用的服务。如何解决,解决方案有三个,但都需要系统工程师配合:
- 更改广播标记,FLAG_INCLUDE_STOPPED_PACKAGES,让包含未启动的应用。
- 让系统过滤你应用的报名,可以在未启动的情况, 接收开机广播
- 系统发送一个特定广播,我们应用去接收。
下面是更改广播标记的修改过程:
1、我们先搜索一下这个标记在AMS的位置。
2、然后就可以修改了
3、编译系统,刷机验证
这里我简单做一个接收开机广播后,启动一个服务做验证
验证完成,希望对遇到问题的你有所帮助!!!