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);
太棒了!非常感谢。这是一个耻辱,我没有注意到这个标志我自己。 – basv 2012-01-15 21:23:00