使两个 pendingIntents 保持相同的 requestCode

Keep both pendingIntents with the same requestCode

我正在 Android 开发报警应用程序。流程非常简单,我只是创建一个 PendingIntent 然后我在 AlarmManager[=] 中调用 setExact() 方法26=] 很像下面。

        Intent myIntent = new Intent(context, BroadcastReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(context, 0, myIntent, 0);

        AlarmManager alarmManager = (AlarmManager) context.getSystemService(ALARM_SERVICE);
        alarmManager.setExactAndAllowWhileIdle(AlarmManager.RTC_WAKEUP, 
        System.currentTimeMillis() + difference, pendingIntent);

经过一些测试,我意识到使用上面的代码片段我只能设置一个警报,因为我将 pendingIntentrequestCode 设置为零,如果我设置另一个闹钟 requestCode 设置为 0 那么它将覆盖前一个。有没有办法在不更改 requestCode 的情况下解决这个问题?我在想也许标志可以帮助我,但我没有找到不会覆盖以前的 pendingIntent 的标志。

我知道显而易见的解决方案是将 0 更改为另一个 int,然后跟踪我所有的 int,选择一个未使用的。如果我刚刚开始这个项目,这个解决方案会很好,但是我已经在中间并且我使用预定义的请求代码 Enums。很难更改此机制并跟踪单个整数,这就是为什么我问是否有一种方法可以在注册具有相同 requestCode 的新对象时不覆盖 pendingIntent。提前谢谢你。

I am asking if there exists a certain type of flag that will be able to differentiate them

没有,也有道理,因为这已经是requestCode参数的目的了。

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

您将必须更改您的机制,以便为未决意图设置不同的请求代码。工作量可能很大,但这是你必须做的。

您可以使 Intent 独一无二,为每个设置不同的 ACTION。然后你仍然可以使用相同的 requestCode 并且会有不同的 PendingIntents.

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