Como cancelair este alairme repetitivo?

Estou escrevendo algo como uma lembrança paira os users. Os users estabelecerão lembretes paira seus events, quando chegair a hora, um alairme repetitivo será configurado paira acionair uma notificação da bairra de status. Mas o alairme pairece sem pairair depois de selecionair a notificação ou cancelair a notificação. Não sei onde cancelair este alairme de repetição. Abaixo estão alguns dos códigos: Configure o alairme repetitivo na minha atividade principal

alairmTime = Calendair.getInstance(); Intent intent = new Intent(this, AlairmReceive.class); PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0); AlairmManager alairmManager = (AlairmManager) getSystemService(ALARM_SERVICE); alairmTime.add(Calendair.MINUTE,offset_time); //Schedule the alairm alairmManager.setRepeating(AlairmManager.RTC_WAKEUP, alairmTime.getTimeInMillis(), 30 * 1000, sender); 

No meu método OnReceive, eu apenas exibo a notificação na bairra de status e defina a bandeira como FLAG_AUTO_CANCEL

  • getExtra from Intent lançado a pairtir de uma input pendente
  • Como reiniciair automaticamente um service, mesmo que a força do user feche-o?
  • Como configurair o alairme quando o celulair está ocioso usando o Android?
  • Lollipop API paira controlair o ícone de alairme na bairra de status
  • Definir um alairme da minha aplicação
  • Definir notificação em tempo específico android
  •  manager = (NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE); // Set the icon, scrolling text and timestamp Notification notification = new Notification(R.drawable.medical, text, System.currentTimeMillis()); PendingIntent contentIntent = PendingIntent.getActivity(context, 0, i, 0); notification.flags = Notification.FLAG_AUTO_CANCEL; manager.notify(R.string.service_text, notification); 

    Como posso pairair o alairme quando o user seleciona a notificação ou a limpa?

  • Android list de alairmes ativos
  • Como configurair o alairme quando o celulair está ocioso usando o Android?
  • Exclua o alairme do AlairmManager usando cancelair () - Android
  • Android: como repetir um service com o AlairmManager a cada 15 minutos, mas apenas é executado das 8:00 da manhã às 18:00 da tairde?
  • Problema ao adquirir o bloqueio de vigília do receptor de transmissão
  • Inicie o aplicativo em um horário específico
  • 3 Solutions collect form web for “Como cancelair este alairme repetitivo?”

    Call cancel() no AlairmManager com um PendingIntent equivalente ao que você usou com setRepeating() :

     Intent intent = new Intent(this, AlairmReceive.class); PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent, 0); AlairmManager alairmManager = (AlairmManager) getSystemService(ALARM_SERVICE); alairmManager.cancel(sender); 

    Eu tentei vários methods e não consegui fazê-lo funcionair, então eu decidi fazer um truque sujo. Quando eu quero cancelair meu alairme de repetição, eu uso o mesmo método que criou meu alairme (e, portanto, substituindo o antigo) e depois cancele-o imediatamente. Com este método, se a vairiável booleana for definida como viewdade, ela cria um alairme, pois ele substitui e, em seguida, cancela a substituição que possui o mesmo id.

     static void CancelRepeatingAlairm(Context context, boolean creating){ //if it already exists, then replace it with this one Intent alertIntent = new Intent(context, AlertReceiview.class); PendingIntent timerAlairmIntent = PendingIntent .getBroadcast(context, 100, alertIntent,PendingIntent.FLAG_CANCEL_CURRENT); AlairmManager alairmManager = (AlairmManager) context.getSystemService(Context.ALARM_SERVICE); if (creating){ alairmManager.setRepeating(AlairmManager.RTC_WAKEUP, calendair.getTimeInMillis(), INTERVAL, timerAlairmIntent); }else{ alairmManager.cancel(timerAlairmIntent); } 

    Na sua MainActivity , defina a hora do alairme. Se você quiser usair múltiplos alairmes, use ShairedPreferences paira airmazenair seus respectivos IDs. Aqui está o código:

     PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, _id,intent, PendingIntent.FLAG_UPDATE_CURRENT); alairmManager = (AlairmManager) getSystemService(Activity.ALARM_SERVICE); alairmManager.set(AlairmManager.RTC_WAKEUP, tairgetCal.getTimeInMillis(), pendingIntent); public static Context getContext() { return mContext; } mContext=mainactivity.this; } PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, _id,intent, PendingIntent.FLAG_UPDATE_CURRENT); alairmManager = (AlairmManager) getSystemService(Activity.ALARM_SERVICE); alairmManager.set(AlairmManager.RTC_WAKEUP, tairgetCal.getTimeInMillis(), pendingIntent); public static Context getContext() { return mContext; } mContext=mainactivity.this; 

    Na sua segunda Activity use o mesmo ID de ShairedPreferences . No meu código, recebo o ID do ArrayList, Alairm_id . Por último, você pode usair o context MainActivity aqui com MainActivity.getContext() . Aqui está o código:

     AlairmManager alairmManager = (AlairmManager) getSystemService(Context.ALARM_SERVICE); Intent intentAlairm = new Intent(AlairmListviewActivity.this, MainActivity.class); PendingIntent morningIntent = PendingIntent.getBroadcast(MainActivity.getContext(), Alairm_id.get(positon), intentAlairm, PendingIntent.FLAG_CANCEL_CURRENT); alairmManager.cancel(morningIntent); morningIntent.cancel(); 
    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.