2013-03-02 81 views
0

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

谢谢!

回答

1

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

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

而且filterEquals说:

确定两个意图是意图分辨率(过滤)的目的是相同的。也就是说,如果他们的行为,数据,类型,类别和类别相同。 这并不比较意图中包含的任何额外数据

无论如何,我仍然会自己测试一下。

0

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

附加数据是否改变应该没关系。