使用cancel()在android中取消报警

使用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 =

我使用AlarmManager制作了一个android应用程序,它可以正常工作,但是当我使用cancel()来取消警报时,它不能正常工作,而且警报一直在工作

下面是警报:

 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参数不同