2012-03-01 106 views
3

我有一些2个应用程序都安装在设备上。其中一个应用捕获ACTION_BOOT_COMPLETED广播,进行一些初始化并发送另一个广播(比如MY_CUSTOM_BROADCAST)。第二个应用程序有一个广播接收器(由清单中的标签提及),用于监听此自定义广播。在启动时,第一个应用程序收到ACTION_BOOT_COMPLETED并成功发送自定义广播。但我的第二个应用程序的接收器似乎并没有收到它。我尝试使用“am广播”发送自定义广播。即使这样,第二个应用程序的接收器也不会收到它。如果应用程序未启动,广播接收器无法播放

然后我开始了第二个应用程序的主要活动,然后尝试使用“am广播”发送广播。然后第二个应用程序的接收器成功收到它。

有人可以帮助我,为什么我的接收器在启动时没有得到自定义广播?我在4.0.3上运行(ICS)。

+2

你在代码或清单中注册你的BroadcastReceiver吗? – waqaslam 2012-03-01 07:35:56

+0

您如何测试广播正在接收? – Khasm 2012-03-01 07:48:17

+0

我正在注册清单。我正在通过记录测试收据,并且在接收到广播时,它会开始一个活动。 – Krishna 2012-03-01 07:52:29

回答

5

显然,在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标志。

+0

嘿,工作。凉。谢谢Khasm – Krishna 2012-03-01 09:48:42

+0

嘿@Khasm,我正在注册一个GCM通知的广播接收器,如果我强制杀死我的应用程序,我不会收到广播。我该怎么做呢? – CommandSpace 2014-12-31 09:18:00