android - 如果应用程序未启动,广播接收器不会收到广播

标签 android android-intent

我在一台设备上安装了大约 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/

相关文章:

Android:RealViewSwitcher 不垂直滚动

java - 在android中选择文件后找不到文件错误

java - 安卓viewpager : weird bug when adding/removing page

java - 从SD卡读取

android - 如何制作基本的 Android USB Host 应用程序?

Android Activity 不进入 onBackPressed() 方法

Android - startActivityForResult 获取用户位置?

android - 适用于 Intent 的所有附加功能的列表

java - 如何检查服务是否在 Android 8 (API 26) 上运行?

java - 在android中使用Parcelable传递对象