简体   繁体   English

BroadcastReceiver无法在Android 3.0上运行

[英]BroadcastReceiver not working on Android 3.0

I have a plugin framework which uses broadcast intents for communication between main application and plugins. 我有一个插件框架,该框架使用广播意图在主应用程序和插件之间进行通信。 On start main app sends a broadcast intent 在启动时,主应用发送广播意图

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

Each plugin app has a broadcast receiver registered in its manifest file. 每个插件应用程序的清单文件中都注册了一个广播接收器。

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

Plugin application does not have any activities defined. 插件应用程序未定义任何活动。 This framework works fine on all Android versions lower that 3.0. 该框架在所有低于3.0的Android版本上均可正常运行。 Starting from Honeycomb the broadcast receiver in plugin is never called. 从Honeycomb开始,永远不会调用插件中的广播接收器。 I could not fix this until I added a main activity in the plugin app. 在插件应用程序中添加主要活动之前,我无法解决此问题。 With the activity defined in manifest existing broadcast receiver started to receive broadcast messages. 通过清单中定义的活动,现有的广播接收器开始接收广播消息。 What is the possible reason for such behavior? 这种行为的可能原因是什么? Is there any way to fix this without adding activity? 有什么方法可以解决此问题而不增加活动?

Thank you 谢谢

From honeycomb onward you need to specify a flag to start the receiving app if it's not already running: Intent.FLAG_INCLUDE_STOPPED_PACKAGES . 从蜂窝开始,如果接收应用尚未运行,则需要指定一个标志以启动该应用: 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM