我遇到了alarmManager
的问题以及与其一起使用的附加内容的待处理意图。
如果我设置多个闹钟,它们将会关闭,但附加功能保持不变。
我已经读过这些问题了:
我尝试过:
一切都无济于事。我不知道为什么它不起作用。
以下是代码段:
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);
答案 0 :(得分:66)
这里可能有两个不同的问题:
1)如果您之前已经创建了PendingIntent,那么它就会匹配"在现有的PendingIntent中,您必须指定PendingIntent.FLAG_UPDATE_CURRENT标志,否则它将不会传递额外内容。 A"匹配"基于Intent.filterEquals()使用的标准,所以一定要阅读那里的文档,并确保你理解数据,动作,类型等。
2)我已经读过,如果你没有对你的意图设置一个动作,那么它就不会传播额外的东西,所以也许尝试一下intent.setAction(" com.blah.Action" )。
答案 1 :(得分:11)
我遇到了类似的问题。使用 PendingIntent.FLAG_ONE_SHOT 可以解决问题,因为这意味着不会重复使用PendingActivity。
答案 2 :(得分:2)
这可能是由于Activity :: getIntent在给定某些意图标记/过滤器的情况下返回Activity的原始意图。
如果是这种情况,您需要查看Activity::onNewIntent。覆盖该方法,传递给该函数的意图应该是具有适当附加功能的新意图等。
归功于这个帮助我解决问题的问题:Why is my searchable activity's Intent.getAction() null?