0

我在不同的时间设置闹钟。我想删除一个特殊的警报。前任。我在不同的时间设置了 100 个闹钟,现在我想删除在 2012 年 2 月 25 日上午 10 点 45 分设置的闹钟。我怎样才能做到这一点。

我编写了以下代码来设置警报。

       final AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
       GregorianCalendar  gc=new GregorianCalendar();
       gc.set(2012, 1, 22, 10, 42,0);

       Intent intent = new Intent(this, AlarmService.class);
       gc.set(Calendar.AM_PM,0);

       final PendingIntent sender = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);

       am.set(AlarmManager.RTC_WAKEUP, gc.getTimeInMillis(), sender);

我有一个广播接收器来接收警报。

4

2 回答 2

4

您需要保存警报的请求代码,在您的情况下为1。您在 PendingIntent.getBroadcast() 方法中传递的第二个参数是您对特定警报的请求代码。因此,当您保存请求代码以及设置警报的时间时,您可以轻松获取特定警报实例然后您可以使用以下方法取消它:

AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, OneShotAlarm.class);    //OneShotAlarm is the broadcast receiver you use for alarm      
PendingIntent sender = PendingIntent.getBroadcast(context,alarm_request_code, intent, 0);
am.cancel(sender);

您应该注意不同警报的每个请求代码都应该是唯一的,否则您的警报将使用您使用旧请求代码设置的新时间重新安排。

希望你明白这一点。

于 2012-02-22T05:38:50.510 回答
0

您可能需要将其存储在某种形式的数据结构中以跟踪时间和对象。话虽如此,我之前没有尝试过存储 AlarmManager 对象。

于 2012-02-22T05:41:45.017 回答