使用cancel()在android中取消报警
我使用AlarmManager制作了一个android应用程序,它可以正常工作,但是当我使用cancel()来取消警报时,它不能正常工作,而且警报一直在工作 下面是警报:使用cancel()在android中取消报警,android,Android,我使用AlarmManager制作了一个android应用程序,它可以正常工作,但是当我使用cancel()来取消警报时,它不能正常工作,而且警报一直在工作 下面是警报: private void setAlarm(Intent intentArg, int intentUnqId, int year, int month, int day, int hour, int minute, boolean repeatAlarm) { PendingIntent pendingIntent =
private void setAlarm(Intent intentArg, int intentUnqId, int year, int month, int day, int hour, int minute, boolean repeatAlarm)
{
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, intentUnqId, intentArg, PendingIntent.FLAG_ONE_SHOT);
SimpleDateFormat format = new SimpleDateFormat("dd-MM-yyyy HH:mm:ss ");
Log.v("app", "Time is " + format.format(calendar.getTime()));
AlarmManager alarmMngr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmMngr.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
if (repeatAlarm == true)
{
alarmMngr.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 2 * 60 * 1000/*AlarmManager.INTERVAL_FIFTEEN_MINUTES*/, pendingIntent);
}
}
以下是取消警报:
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, intentID, intentArg, 0);
AlarmManager alarmMngr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmMngr.cancel(pendingIntent);
您需要使用AlarmManager中的cancel(…)方法,使用与设置报警相同的PendingEvent。例如:
this.getAlarmManager().cancel(malarmPendingEvent)代码>(这是指取消报警的活动或服务)
将PendingEvent创建为:
mAlarmPendingIntent = PendingIntent.getActivity(this, requestCode, intent, flags);
您也可以参考此链接来执行此操作
用于设置报警的意图应与用于取消报警的意图相匹配
意向匹配按照
在pendingent
中用于cancel()
使用pendingent.FLAG\u CANCEL\u CURRENT
标志,而不是0
传递给pendingent
以取消报警的id参数与传递给pendingent
传递给AlarmManager
的id参数不同