BroadcastReceiver无法在Android 3.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开始,插件中的广播接收器永远不会被调用。 我无法修复此问题,直到我在插件应用程序中添加了主要活动。随着在清单中定义的活动,现有广播接收机开始接收广播消息。这种行为的可能原因是什么?有没有什么方法可以解决这个问题而不需要添加任何活动

谢谢

从蜂窝以后你需要指定一个标志,开始接收应用程序,如果它尚未运行: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