Android 我如何才能正确地将唯一的额外内容传递给待定的意图?

Android 我如何才能正确地将唯一的额外内容传递给待定的意图?,android,android-intent,alarmmanager,android-pendingintent,extras,Android,Android Intent,Alarmmanager,Android Pendingintent,Extras,我对alarmManager以及与之相关的附加功能的未决意图有问题 如果我设置了多个警报,它们将熄灭,但是额外的警报保持不变 我已经阅读了这些问题: 我试过: 为每个挂起的意图分配唯一的ID,并 使用所有挂起的意图标志 都没有用。我不知道为什么它不起作用 以下是一段代码片段: Intent intent = new Intent(con, AppointmentNotificationReciever.class); i

我对
alarmManager
以及与之相关的附加功能的未决意图有问题

如果我设置了多个警报,它们将熄灭,但是额外的警报保持不变

我已经阅读了这些问题:

我试过:

  • 为每个挂起的意图分配唯一的ID,并
  • 使用所有挂起的意图标志
都没有用。我不知道为什么它不起作用

以下是一段代码片段:

Intent intent = new Intent(con,
                    AppointmentNotificationReciever.class);
            intent.putExtra("foo", bar.toString());


            int id = randomNum;

            PendingIntent sender = PendingIntent.getBroadcast(con, id,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);


            AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);

这可能是由于Activity::getIntent在给定某些意图标志/筛选器的情况下返回了活动的原始意图

如果你是这样的话,你需要看看。重写该方法,传递给该函数的意图应该是具有适当附加值的新意图,等等


这个问题帮助我解决了我的问题:

这里可能有两个不同的问题:

1) 如果您之前已经创建了PendingEvent,并且它与现有PendingEvent“匹配”,则必须指定PendingEvent.FLAG_UPDATE_CURRENT标志,否则它将不会通过额外设置。“匹配”基于Intent.filterEquals()使用的标准,因此请务必阅读那里的文档,并确保您了解数据、操作、类型等


2) 我已经读到,如果你不在你的意图上设置一个动作,那么它将不会传播额外的内容,所以也许可以尝试intent.setAction(“com.blah.action”)。

我遇到了类似的问题。使用pendingent.FLAG_ONE_SHOT可能会解决这个问题,因为这意味着pendingent活动将不会被重用。

在我的挂起意图中,我尝试将pendingent.FLAG_UPDATE_设置为当前,但现在调用意图时,我会遇到类似“java.lang.IllegalArgumentException:无法在此处使用FLAG_RECEIVER_BOOT_升级”这样的错误-不知道这个启动标志是从哪里来的,我只添加了一个标志\u UPDATE\u CURRENT。你以前有过类似的问题吗?(我在华为Ideos,2.2)这篇帖子解释了我看到的几个问题,干得好!对于这个恼人和误导性的错误真的很有帮助。meI使用的标志和设置操作使用了不同的requestCode值,使filterEquals将它们视为不同的意图,如下所示: