区分具有相同操作的广播接收器

时间:2014-08-05 23:36:18

标签: android broadcastreceiver google-cloud-messaging android-broadcast

情况如下:

该怎么做: 我有两个用于GCM消息的广播接收器,它们都具有相同的权限,正在监听REGISTRATION和RECEIVE动作。 现在其中一个广播接收器正在监听我自己的服务器而另一个广播接收器应该是从第三方服务器监听gcm消息。

问题 由于它们都在监听gcm消息,因此无论何时进入推送通知,都会调用两个接收器。如何配置接收器,以便其中一个只监听我的服务器而另一个只监听第三方服务器

2 个答案:

答案 0 :(得分:2)

  

如何配置接收器,使其中一个只监听我的服务器而另一个只监听第三方服务器

这是不可能的。您无法根据GCM邮件内容或创建者设置<intent-filter>。您的选择是:

  1. 为您的应用的所有GCM消息调用BroadcastReceivers

  2. 根据我的评论,只有一个BroadcastReceiver

  3. 消除一条消息来源。

  4. 将一个消息来源迁移到GCM以外的其他内容。

  5. 筹集3907.6亿美元,收购Google,并强制他们设计一个解决方案,根据邮件内容或发起人允许不同的BroadcastReceiver <intent-filter>元素。请注意,实际的美元数字可能会根据市场情况而有所不同,不包括经纪或法律费用。投资前请咨询您的财务顾问。

答案 1 :(得分:0)

您可以在每次推送中发送自定义“动作”吗?然后,您可以根据操作进行过滤。

<receiver android:name=".MyCustomReceiver" android:exported="false">
    <intent-filter>
        <action android:name="com.example.MY_CUSTOM_ACTION" />
    </intent-filter>
</receiver>

<receiver android:name=".MyCustomReceiver2" android:exported="false">
    <intent-filter>
        <action android:name="com.example.MY_CUSTOM_ACTION2" />
    </intent-filter>
</receiver>