使两个pendingIntents保持相同的requestCode

时间:2017-08-02 12:24:31

标签: android alarmmanager android-pendingintent

我正在Android中开发一个警报应用程序。流程非常简单,我只是创建一个 PendingIntent ,然后在 AlarmManager 中调用 setExact()方法,如下所示。

($ 2) :: (a -> b) -> b 

经过一些测试,我意识到使用上面的代码片段,我只能设置一个闹钟,因为我将 pendingIntent requestCode 设置为零,如果我设置了另一个闹钟将 requestCode 设置为0,然后它将覆盖前一个。有没有办法解决这个问题,而无需更改 requestCode ?我想也许旗帜可以帮助我,但我没有找到一个不会覆盖先前pendingIntent的旗帜。

我知道明显的解决方案是将0更改为另一个int然后跟踪我的所有int,选择一个未使用的int。如果我刚刚启动项目,那么这个解决方案就没问题,但是我已经处于中间位置并且我使用预定义的枚举作为请求代码。很难改变这种机制并跟踪个别内注,这就是为什么我在询问是否有一种方法可以在注册具有相同 requestCode 的新内容时不覆盖pendingIntent。提前谢谢。

2 个答案:

答案 0 :(得分:3)

您可以让Intent唯一为每个人设置不同的动作。然后,您仍然可以使用相同的requestCode,并且会有不同的PendingIntent

如果您希望以后能够取消警报,则需要跟踪您使用的操作。

答案 1 :(得分:2)

  

我在问是否存在某种能够区分它们的旗帜

没有,这是有意义的,因为这已经是requestCode参数的目的。

有关信息,这些是关于标志的选项:

enter image description here

您必须更改机制才能为Pending Intents提供不同的requestCodes。这可能是很多工作,但这是你必须要做的。