我正在构建一个应用程序,为每周的每一天(在某个小时和分钟)设置2个闹钟,闹钟每周重复一周。Android AlarmManager:有没有办法清除所有设置的闹钟?
现在重点是:如果用户更改了警报,我需要取消之前设置的警报。
有没有办法简单地取消我的应用程序设置的所有警报?
我正在构建一个应用程序,为每周的每一天(在某个小时和分钟)设置2个闹钟,闹钟每周重复一周。Android AlarmManager:有没有办法清除所有设置的闹钟?
现在重点是:如果用户更改了警报,我需要取消之前设置的警报。
有没有办法简单地取消我的应用程序设置的所有警报?
我想你可以在得到眼睛:AlarmManager.Cancel
而且对问题/答案:Android: Get all PendingIntents set with AlarmManager
正如有规定不能问到AlarmManager告诉你的PendingIntent在它。但我认为你可以使一些PendingIntent类似于你想取消的PendingIntent;)。
如果您要取消先前的警报,那么在PendingIntent中,您的标志应该是PendingIntent.FLAG_CANCEL_CURRENT。如果它已经创建,它将阻止生成新的PendingIntent。并确保在设置警报之前取消相同的PendingIntent,然后设置闹钟。你应该这样尝试:
AlarmManager 2AlarmsInWeekAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService/getActivity(context, int, intent, PendingIntent.FLAG_CANCEL_CURRENT);
2AlarmsInWeekAlarmManager.cancel(pendingIntent);
然后你可以使用set或setRepeating方法。 你的情况应该是
2AlarmsInWeekAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, "timeInMillis", "repetitionTimeInMillis", pendingintent);
这保证了设置的警报之前将取消所有先前使用相同的PendingIntent报警。
希望你懂了!
我需要澄清。取消()文档说“删除任何与匹配的意图警报。”这是否意味着请求代码im getBroadcast(Context context,int requestCode,Intent intent,int flags)也需要相同?请澄清。 – user2731584
你好,文档对'requestCode'没有太多的描述。但是如果你在[PendingIntent](http://developer.android.com/reference/android/app/PendingIntent.html)中看到'getBroadcast',它会检索一个'PendingIntent'。所以根据我的知识**,如果你把不同的'requestCode's,那么你会得到2个不同的'PendingIntent's,因此取消它将是另一个'PendingIntent'而不是所需的!也看看[这个链接](http://developer.android.com/reference/android/app/PendingIntent.html#FLAG_CANCEL_CURRENT)。 – thegiga
谢谢你回到我身边。让我再次阅读文档。我也没有看到请求班级安排的警报列表。任何想法? – user2731584