【问题标题】:BroadcastReceiver not working on Android 3.0BroadcastReceiver 在 Android 3.0 上不起作用
【发布时间】:2012-01-15 09:20:43
【问题描述】:

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

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 开始,插件中的广播接收器永远不会被调用。 在插件应用程序中添加主要活动之前,我无法解决此问题。随着清单中定义的活动,现有广播接收器开始接收广播消息。这种行为的可能原因是什么?有什么方法可以在不添加活动的情况下解决此问题?

谢谢

【问题讨论】:

    标签: android broadcastreceiver


    【解决方案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);
    

    【讨论】:

    • 太棒了!非常感谢。很遗憾我自己没有注意到这个标志。
    猜你喜欢
    • 2022-11-15
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    • 2016-06-28
    • 2017-08-12
    • 1970-01-01
    • 2017-12-02
    相关资源
    最近更新 更多