Android:获取所有使用 AlarmManager 设置的 PendingIntents

标签 android alarmmanager

我正在设置这样的闹钟:

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/

相关文章:

java - 如何在android中以定义的间隔填充 ListView 中的文本字符串?

安卓上的javascript

android - "createFromResourceId()"到哪里去了?

android - AlarmManager.setExact 不是等待时间间隔

android - 当应用程序不在后台且自动启动选项被禁用时,JobScheduler 在小米中不起作用

android - 如何在 android 中一次设置多个闹钟?

android - (Android) 保持服务运行,即使应用程序被强制停止

javascript - 适用于 Android 的 React Native 日期和时间选择器不起作用

Android sqlite无法创建TEMP表

android - 当警报响起时,如果应用处于 Activity 状态则开始 Activity ,如果应用未处于 Activity 状态则发送通知