使用PendingIntents取消警报

时间:2013-03-02 20:55:40

标签: android android-intent

我正在尝试取消上次运行应用时设置的闹钟。此警报具有使用PendingIntent.getBroadcast设置的PendingIntent和包含由intent.putExtra设置的一些变量的内部Intent。我的问题是,我知道可以通过调用alarmManager.cancel(pendingIntent)来取消警报,其中pendingIntent与用于设置警报的内容相同。但是,如果置于意图中的变量被更改,警报是否仍会被取消?例如,我使用intent.putExtra(“Joe”)设置警报,其中Joe是联系人姓名。稍后我的应用程序关闭,当它重新运行时,我尝试取消“Joe”的警报,但用户已将联系人的名称更改为“Jones”。我可以在不知道我投入意图的变量的情况下取消警报吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

我认为它应该取消alaram,即使有些数据不同。 cancel方法说:

  

任何类型的警报,其Intent与此匹配(由filterEquals(Intent)定义)将被取消。

filterEquals说:

  

确定两个意图是否相同以进行意图解析(过滤)。也就是说,如果他们的行为,数据,类型,类别和类别是相同的。 这不会比较意图中包含的任何额外数据

无论如何,我还是自己测试一下。

答案 1 :(得分:0)

根据this question(参考文档),在检查意图是否与另一个意图相同时,不会考虑使用putExtra添加的任何内容。

额外数据是否改变无关紧要。