2013-11-11 2 views
0

я есть служба (AlarmService.java), где тревога объявляемой:Почему моя тревога не отменяется

  Intent intentAlarm = new Intent(this, TimeAlarm.class);    
      intentAlarm.putExtra("Notif_body", Notif_Body);    
      AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, 0); 
      alarmManager.set(AlarmManager.RTC_WAKEUP,new GregorianCalendar().getTimeInMillis()+5*1000, displayIntent); 

и активность (user_settings.java), из которого я хочу, чтобы удалить эту тревогу раз флажок снят:

  AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      Intent intentAlarm = new Intent(this,TimeAlarm.class); 
      PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, 0);    
      alarmManager.cancel(displayIntent); 

, но это не работает моя тревога не удаляется, почему в том, что хотя pendingintent такого же, как и должно быть !!

ответ

0

Моя проблема была:

вместо добавления:

if(bool_activate_reminder==true){ 
//call the alarm method; 
} 

я делал:

if(bool_activate_reminder=true){//with one equal 
    //call the alarm method; 
    } 

так всегда осуществляется доступ к ..., когда я установил его и использовал следующий код в этой услуге:

Intent intentAlarm = new Intent(getApplication(), TimeAlarm.class);  
       //add the notification body to the intent: 
       intentAlarm.putExtra("Notif_body", Notif_Body);    
       // create the object 
       AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
       //set the alarm for particular time 
       PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT); 
       alarmManager.set(AlarmManager.RTC_WAKEUP,new GregorianCalendar().getTimeInMillis()+20*1000, displayIntent); 

и в деятельности:

AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE); 
      Intent intentAlarm = new Intent(getApplication(),TimeAlarm.class); 
      PendingIntent displayIntent = PendingIntent.getBroadcast(getApplication(),1,intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT);    
      alarmManager.cancel(displayIntent); 

он работал просто отлично ..

0
intentAlarm.putExtra("Notif_body", Notif_Body); 

Помещенный выше линии при создании intentAlarm при отмене тревоги или удалить его с момента, когда вы устанавливаете сигнализацию. Думаю, это сработает.

+0

Уже попробовал, что и это не сработало, но будет попробовать еще раз .. – user2849412

+0

Если это не работает, вы можете попробовать PendingIntent displayIntent = PendingIntent.getBroadcast (getApplication(), 1, intentAlarm, PendingIntent.FLAG_UPDATE_CURRENT); Ссылка: http://stackoverflow.com/questions/18343708/android-alarmmanager-cancel-not-actually-cancelling-alarm-pendingintent – shallOvercome

+0

Это тоже не сработало, и я также попробовал это раньше и снова попробовал это сейчас ... – user2849412

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