2012-01-15 44 views
0

我有一個插件框架,它使用廣播意圖在主應用程序和插件之間進行通信。在啓動主應用程序發送一個廣播意圖BroadcastReceiver無法在Android 3.0上工作

sendBroadcast(new Intent("com.mypackage.myapp.custom.intent.action.ADDON_REQ")); 

每個插件的應用程序在其清單文件中註冊的廣播接收器。

<receiver 
     android:name="IncomingReceiver" 
     android:enabled="true"> 
     <intent-filter> 
      <action android:name="com.mypackage.myapp.custom.intent.action.ADDON_REQ" > 
      </action> 
     </intent-filter> 
    </receiver> 

插件應用程序沒有定義任何活動。這個框架適用於所有低於3.0的Android版本。從Honeycomb開始,插件中的廣播接收器永遠不會被調用。 我無法修復此問題,直到我在插件應用程序中添加了主要活動。隨着在清單中定義的活動,現有廣播接收機開始接收廣播消息。這種行爲的可能原因是什麼?有沒有什麼方法可以解決這個問題而不需要添加任何活動

謝謝

回答

1

從蜂窩以後你需要指定一個標誌,開始接收應用程序,如果它尚未運行:Intent.FLAG_INCLUDE_STOPPED_PACKAGES

Intent intent = new Intent("com.mypackage.myapp.custom.intent.action.ADDON_REQ"); 
intent.setFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES); 
sendBroadcast(intent); 
+0

太棒了!非常感謝。這是一個恥辱,我沒有注意到這個標誌我自己。 – basv 2012-01-15 21:23:00