【问题标题】:Deleteing alarms in alarm manager在警报管理器中删除警报
【发布时间】:2017-01-07 19:42:29
【问题描述】:
例如,我有一个日历,它允许用户设置每天的闹钟。对于这个功能,我采用了警报管理器的方法setRepeating()。但是当用户想要从特定日期删除警报但不删除所有警报时,我的问题就出现了。我怎样才能做到这一点?警报管理器是设置警报的唯一方法吗?任何想法将不胜感激。
我想到的最聪明的事情 - 设置广播接收器,它将在每天 00:00 触发,并通过方法 alarmManager.set() 设置所有警报。已删除的警报将在数据库中,如果今天的警报与已删除的警报匹配 - 广播接收器将不会设置此警报。
【问题讨论】:
标签:
android
algorithm
broadcastreceiver
alarmmanager
【解决方案1】:
AlarmManager 有一个方法cancel();,它可以帮助你。但在你的情况下,我会更有信心采用你在问题中作为后盾的方法。
【解决方案2】:
您可以使用警报管理器的 .cancel() 方法。但请记住一件事。您必须在提供给警报管理器的待处理意图中提供与您设置警报的相同的 ID。
PendingIntent pendingIntent = PendingIntent.getBroadcast(getContext(),id,intent, PendingIntent.FLAG_CANCEL_CURRENT);
alarmManager.cancel(pendingIntent);
提供的 ID 应与用于设置警报的 ID 相同。
我希望这会帮助你..
我建议您将每个警报的 id 保存在某处,并在需要时使用它来取消它。