我在一台设备上安装了大约 2 个应用程序。其中一个应用程序捕获 ACTION_BOOT_COMPLETED 广播,进行一些初始化并发送另一个广播(比如 MY_CUSTOM_BROADCAST)。第二个应用程序有一个 broadcastreceiver(由 list 中的标记提及),用于监听此自定义广播。在启动时,第一个应用程序收到 ACTION_BOOT_COMPLETED 并成功发送自定义广播。但是我的第二个应用程序的接收器似乎没有收到它。我尝试使用“am broadcast”发送自定义广播。即使这样,第二个应用程序的接收器也不会收到它。
然后我启动了第二个应用程序的主要 Activity ,然后尝试使用“am broadcast”发送广播。然后第二个应用的接收器成功接收到它。
有人能帮我解释一下为什么我的接收器在启动时没有收到自定义广播吗?我在 4.0.3 (ICS) 上运行它。
最佳答案
显然在 Android 3.1+ 中,如果应用程序从未运行过或已被强制停止,则它们处于停止状态。系统将这些应用排除在广播 Intent 之外。可以使用 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
标志。
关于android - 如果应用程序未启动,广播接收器不会收到广播,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9512259/