2013-11-27 3 views
0

Я сделал приложение для Android с помощью AlarmManager, он отлично работает, но когда я использую cancel(), чтобы отменить будильник, он не работает нормально, и будильник продолжает работать !!отмена тревоги в android с помощью отмены()

здесь делает тревогу:

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); 

ответ

0

Параметр id, который вы передаете в PendingIntent, чтобы отменить будильник, не совпадает с переданным в PendingIntentAlarmManager.

0

Вам нужно использовать метод отмены (...) от AlarmManager, используя тот же PendingIntent вам используется для установки будильника. Пример:

this.getAlarmManager().cancel(mAlarmPendingIntent); (это относится к Деятельности или Службе, из которой вы отменяете аварийный сигнал).

Создать PendingIntent как:

mAlarmPendingIntent = PendingIntent.getActivity(this, requestCode, intent, flags); 

также и может ссылаться на эту ссылку, чтобы сделать это http://smallbusiness.chron.com/cancel-android-alarm-44758.html

0

Намерения, используемое для установки сигнализации должны соответствовать умыслу, используемый для отмены тревоги.

Намерение матч проводится в соответствии с public boolean filterEquals (Intent other)

В pendingIntent используется для cancel() использования PendingIntent.FLAG_CANCEL_CURRENT флага вместо 0.

Смежные вопросы