2013-09-26 35 views
2

我正在使用新的Android構建系統創建應用程序,並使用LocalBroadcastManagerIntentService的通知發送回ActivityLocalBroadcastManager是否依賴應用程序包名稱?

我已將以下產品風味定義爲構建3個獨立應用程序的一部分;

productFlavours { 
    london { 
     packageName 'com.example.lo' 
    } 
    dubai { 
     packageName 'com.example.du' 
    } 
} 

當我使用這些產品口味之一構建應用程序時,我沒有通過管理器獲得任何廣播。我已經確認服務和活動都在同一個進程中運行。

根據我的活動的Activity#onCreate方法的要求,廣播接收機被綁定,但沒有收到任何事件。我也通過打印出活動和服務的進程ID進行了確認,並且都報告說這是相同的進程,所以這不成問題。

作爲一項測試,我刪除了產品口味,並使用應用清單文件中定義的單個軟件包名稱構建應用程序,現在廣播管理器似乎按預期運行。關於我發送的意圖,我只是設置了行動。

我需要設置其他任何東西嗎?

+0

你確定你註冊的接收器有正確的意圖 - 過濾器?也許顯示一些代碼在哪裏發生 – waqaslam

+0

是檢查並雙重檢查意圖過濾器。我在onCreate方法上註冊它,並在onDestroy中取消註冊。 –

+0

您是否使用相同的上下文進行觸發和接收廣播?因爲LocalBroadcasts綁定到上下文。 – waqaslam

回答

1

如果你看一下source code of LocalBroadcastManager你會看到,如果你給你的Intent標誌Intent.FLAG_DEBUG_LOG_RESOLUTION(通過使用Intent.addFlags(int)),它會在logcat的打印非常有用的信息:你可能想嘗試的是有和無的味道並比較結果以查看出了什麼問題。

+0

I這件事會發揮,看看它是否會拋出任何線索。 –

0

我在同一個項目中有org.cmpny.apporg.cmpny.app.additional命名空間; LocalBroadcastManager工作正常,沒有什麼需要在AndroidManifest (除LocalBroadcastManager不能用於「:remote」服務,但這是另一點),需要進行調整)

相關問題