【问题标题】:How to get sticky broadcast data when BroadcastReceiver is enabled?启用 BroadcastReceiver 时如何获取粘性广播数据?
【发布时间】:2012-07-26 18:18:40
【问题描述】:

我有一个在清单上注册的BroadcastReceiver,它最初被禁用android:enabled="false"

清单:

<receiver
            android:name="com.sample.name.MainWidgetBroadcastReceiver"
            android:enabled="false"
            android:exported="false" >
            <intent-filter>
                <action android:name="com.sample.name.intent.action.METADATA_UPDATE" />
            </intent-filter>
        </receiver>

我收到com.sample.name.intent.action.METADATA_UPDATE 的意图是粘性的。启用接收器时如何获取此粘性数据?如果解决方案触发了 BroadcastReceiver 或者我必须自己拉它,那会很好。我宁愿不必为了获取这些数据而注册广播...

PackageManager pm = context.getPackageManager();
        pm.setComponentEnabledSetting(
                new ComponentName(context, MainWidgetBroadcastReceiver.class),
                PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
                PackageManager.DONT_KILL_APP);

【问题讨论】:

  • 我在问题底部发布了有关如何启用广播的代码。

标签: android android-intent


【解决方案1】:

哎呀!我想我应该更努力地阅读 API...registerReceiver(null, intentFilter) 会这样做!

如果您知道您注册的 Intent 具有粘性,您可以 为您的接收器提供空值。在这种情况下,没有注册接收者 -- 该函数只返回匹配过滤器的粘性 Intent。在多个匹配的情况下,与上述相同的规则 申请。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2017-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多