BroadcastReceiver无法在Android 3.0上运行

时间:2012-01-15 09:20:44

标签: android broadcastreceiver

我有一个插件框架,它使用广播意图在主应用程序和插件之间进行通信。启动主应用程序发送广播意图

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 个答案:

答案 0 :(得分: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);