2012-03-01 105 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