0

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

谢谢!

4

2 回答 2

1

根据这个问题(参考文档),putExtra在检查意图是否等于另一个意图时,您添加的任何内容都不会被考虑在内。

是否更改了额外的数据无关紧要。

于 2013-03-02T21:11:35.350 回答
1

我认为无论如何它都应该取消警报,即使某些数据不同。该cancel方法说:

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

filterEquals说:

出于意图解析(过滤)的目的,确定两个意图是否相同。也就是说,如果它们的动作、数据、类型、类和类别相同。这不会比较意图中包含的任何额外数据

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

于 2013-03-02T21:12:47.323 回答