我正在设置这样的闹钟:
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmTime, pendingEvent);
我有兴趣删除之前设置的所有警报,并清除它们。
有没有办法让我这样做或获取当前设置的所有警报,以便我可以手动删除它们?
最佳答案
您不必一直引用它。只需定义一个新的 PendingIntent 就像您在创建它时定义的一样。
例如:
如果我创建了一个待由 AlarmManager 触发的 PendingIntent,如下所示:
Intent alarmIntent = new Intent(getApplicationContext(), AlarmBroadcastReceiver.class);
alarmIntent.setData(Uri.parse("custom://" + alarm.ID));
alarmIntent.setAction(String.valueOf(alarm.ID));
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent displayIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);
alarmManager.set(AlarmManager.RTC_WAKEUP, alarmDateTime, displayIntent);
然后在您的其他代码(甚至是另一个 Activity )中的某个位置,您可以这样做来取消:
Intent alarmIntent = new Intent(getApplicationContext(), AlarmBroadcastReceiver.class);
alarmIntent.setData(Uri.parse("custom://" + alarm.ID));
alarmIntent.setAction(String.valueOf(alarm.ID));
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
PendingIntent displayIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);
alarmManager.cancel(displayIntent);
这里重要的是使用完全相同的数据和操作以及其他标准设置 PendingIntent 以及此处所述http://developer.android.com/reference/android/app/AlarmManager.html#cancel%28android.app.PendingIntent%29
关于Android:获取所有使用 AlarmManager 设置的 PendingIntents,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4315611/