Android接收器 - 多个应用程序中接收器的相同名称和动作

时间:2015-12-07 09:05:45

标签: android broadcastreceiver android-pendingintent

假设我在2 app(App A& App B)的清单中有以下接收器:

<receiver android:enabled="true" android:name="com.MyReceiver">
    <intent-filter>
        <action android:name="com.COMMON_ACTION" />
    </intent-filter>
</receiver>

在每个应用中,我想创建PendingIntent(如果不存在),并使用AlarmManager进行不精确的重复设置。要检查是否存在,我执行以下代码:

boolean alarmExists = (PendingIntent.getBroadcast(mContext,
            DEFAULT_PENDING_INTENT_ID, intent,
            PendingIntent.FLAG_NO_CREATE) != null);

这是否应该在App A中返回false,即使App B已在同一设备上创建了待处理的意图? 是否有理由推迟两个应用中的接收器(通过对每个应用使用不同的操作)?

1 个答案:

答案 0 :(得分:1)

每个应用程序都有自己的PendingIntent个。这些不在不同的应用程序之间共享。

如果应用程序A使用ACTION =“com.COMMON_ACTION”创建了PendingIntent,并且应用程序B执行了:

Intent intent = new Intent("com.COMMON_ACTION");
boolean alarmExists = (PendingIntent.getBroadcast(mContext,
        DEFAULT_PENDING_INTENT_ID, intent,
        PendingIntent.FLAG_NO_CREATE) != null);

alarmExists将为false