如何才能正确地将唯一的附加内容传递给待处理的意图?

nin*_*nse 23 android alarmmanager extras android-intent android-pendingintent

我遇到了一个问题,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);
Run Code Online (Sandbox Code Playgroud)

Dus*_*inB 66

可能有两个不同的问题:

1)如果您之前已经创建了PendingIntent并且它"匹配"了现有的PendingIntent,那么您必须指定PendingIntent.FLAG_UPDATE_CURRENT标志,否则它将不会传递额外的内容."匹配"基于Intent.filterEquals()使用的标准,因此请务必阅读那里的文档并确保您了解数据,操作,类型等.

2)我已经读过,如果你没有对你的意图设置一个动作,那么它不会传播额外的东西,所以也许尝试一下intent.setAction("com.blah.Action").

  • 设置一个动作确实解决了我的问题,谢谢! (3认同)

Rob*_*ews 11

我遇到了类似的问题.使用PendingIntent.FLAG_ONE_SHOT可以解决问题,因为这意味着PendingActivity不会被重用.