我在设备上安装了2个应用程序。其中一个应用程序捕获ACTION_BOOT_COMPLETED广播,进行一些初始化并发送另一个广播(比如MY_CUSTOM_BROADCAST)。第二个应用程序有一个广播接收器(清单中的标签提到),它监听这个自定义广播。在启动时,第一个应用程序收到ACTION_BOOT_COMPLETED并成功发送自定义广播。但我的第二个应用程序的接收器似乎没有收到它。我尝试使用“am broadcast”发送自定义广播。即使这样,第二个应用程序的接收器也不会收到它。
然后我开始了第二个应用程序的主要活动,然后尝试使用“am broadcast”发送广播。然后第二个应用程序的接收器成功收到它。
有人可以帮我解释为什么我的接收器在启动时没有获得自定义广播吗?我在4.0.3(ICS)上运行它。
答案 0 :(得分:6)
显然在Android 3.1+中,如果应用程序从未运行过,或者已被强制停止,则应用程序处于停止状态。系统从广播意图中排除这些应用程序。可以使用Intent.FLAG_INCLUDE_STOPPED_PACKAGES
标记包含它们。
http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html
http://developer.android.com/sdk/android-3.1.html#launchcontrols
另外,我认为你需要Intent.FLAG_ACTIVITY_NEW_TASK
标志。