我在我的应用程序中使用AlarmManager
在适当的时间设置闹钟。我在我的应用程序中有多个闹钟,所以每次用户保存一个闹钟时,我都会发现下次应该播放哪个闹钟,并将该闹钟的ID作为一个意图的附加信息传递。这里是我使用的代码:如何更改AlarmManager警报?
Intent intent = new Intent(this, AlarmBroadcastReceiver.class);
intent.putExtra("alrmId", finalAlr);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 56, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
alarmManager.set(AlarmManager.RTC_WAKEUP, (System.currentTimeMillis() + (finalAlrDay * 24 * 60 * 60 * 1000) + (finalAlrHr * 60 * 60 * 1000) + (finalAlrMin * 60 * 1000) + (finalAlrSec * 1000)), pendingIntent);
在这里,我取消是否有任何旧的警报设置,然后添加一个新的。所有警报在正确的时间播放,但问题是我在intent.putExtra
中设置的alrmId
值始终与我第一次设置的值相同。
例如,如果我第一次设置闹钟,并且当时alrmId
设置为'1',那么无论我在此之后输入什么值,它都会保持不变。我试过调试它,并确保intent.putExtra("alrmId", finalAlr)
正确的值,所以这不是问题。问题是什么?
感谢您的答复,我已经改变了我的代码这一点,但它仍然犯规解决it.PendingIntent的PendingIntent =的PendingIntent .getBroadcast(this,56,intent,PendingIntent.FLAG_UPDATE_CURRENT); – Parashar 2011-06-10 20:26:03
它的工作原理是,我没有将广播接收器的价值正确地传递给活动。谢谢你的帮助。 – Parashar 2011-06-15 15:40:10