Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 取消特定的警报_Android_Alarms - Fatal编程技术网

Android 取消特定的警报

Android 取消特定的警报,android,alarms,Android,Alarms,我在不同的时间设置警报。我想删除一个特定的报警。 例如,我在不同时间设置了100个警报,现在我想删除2012年2月25日上午10:45设置的警报。我该怎么做呢 我编写了以下代码来设置警报 final AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); GregorianCalendar gc=new GregorianCalendar(); gc.set(2

我在不同的时间设置警报。我想删除一个特定的报警。 例如,我在不同时间设置了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);

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

您需要保存警报的请求代码,在您的案例中是1。在PendingEvent.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);
您应该注意,不同报警的每个请求代码都应该是唯一的,否则您的报警将被重新安排为使用旧请求代码设置的新时间


希望您能理解这一点。

您需要保存报警请求代码,在您的案例中为1。在PendingEvent.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);
您应该注意,不同报警的每个请求代码都应该是唯一的,否则您的报警将被重新安排为使用旧请求代码设置的新时间


希望您能理解这一点。

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

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

您搜索过Stackoverflow吗,这一点以前有过回答?您搜索过Stackoverflow吗,这一点以前有过回答?我必须在数据库中存储类似alarmId(RequestCode)的东西是的…简单地说,创建一个包含两列的表:alarmid和time。然后将每个alarmid及其时间保存到表中。然后遍历该表以查找特定时间的报警。它将为您提供id,然后您可以使用它取消报警。我必须在数据库中存储类似alarmid(RequestCode)的内容Yes…很简单,创建一个包含两列的表:alarmid和time。然后将每个alarmid及其时间保存到该表中。然后遍历该表以查找特定时间的报警。它将为您提供id,然后您可以使用它取消报警。