独特的PendingIntent with Manifest声明

时间:2015-10-08 20:01:41

标签: java android alarmmanager android-pendingintent alarm

我正在创建一个Android应用程序,它以编程方式创建在应用程序关闭时仍然存在的警报。为了让警报持续存在,我必须在我的Manifest中定义接收器,如下所示:

<receiver
android:name="com.blah.blah.AlarmReceiver"
android:enabled="true"
android:exported="true" >
<intent-filter android:priority="999" >
     <action android:name="com.blah.blah.ALARM" />
</intent-filter>
</receiver>

以下是我目前正在创建PendingIntents的方式..

Intent intent = new Intent(ACTION_ALARM);
PendingIntent pIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
AlarmManager manager = (AlarmManager   (this.getSystemService(Context.ALARM_SERVICE ));

由于我使用常量ACTION_ALARM,所有警报都连接到相同的PendingIntent,因此调用.cancel()会删除所有警报。但是,我想删除特定的警报实例。我知道创建一个唯一PendingIntent的唯一方法是指定一个独特的动作,这与我在上面的Manifest中定义我的Receiver相冲突。有没有其他方法可以为我的警报制作可区分的PendingIntents?我也尝试添加数据,但似乎没有触发Manifest中的Receiver。

或者,如果我以编程方式为每个警报启动接收器,是否有办法在应用程序关闭时保留这些警报?

感谢。

1 个答案:

答案 0 :(得分:0)

在此处找到解决方案:How to create different pendingintent so filterEquals() return false?

使用PendingIntent.getBroadcast的第二个参数可以建立一个唯一的PendingIntent。不需要一个独特的动作,虽然这是我能找到的其他帖子所建议的。

现在不确定如何关闭这个问题......