Je suis en train de créer une application qui définit 2 alarmes pour chaque jour de la semaine (à une certaine heure et minute), les alarmes se répètent pour toujours semaine après semaine.
Maintenant, le point est le suivant: si l'utilisateur modifie les alarmes, je devrai annuler les alarmes précédemment définies.
Existe-t-il un moyen d'annuler simplement toutes les alarmes définies par mon application?
Je pense que vous pourriez avoir un œil sur: AlarmManager.Cancel
Et sur cette question/réponse: Android: Obtenez tous les PendingIntents définis avec AlarmManager
Comme indiqué ici, vous ne pouvez pas demander à AlarmManager de vous dire ce qu'il y a en attente. Mais je pense que vous pouvez créer un PendingIntent similaire à celui que vous souhaitez annuler;).
si vous annulez les alarmes précédentes, dans PendingIntent
votre indicateur devrait être PendingIntent.FLAG_CANCEL_CURRENT
. Cela empêchera de générer un nouveau PendingIntent
s'il est déjà créé. Et assurez-vous qu'avant de régler l'alarme, annulez simplement la même PendingIntent
et ensuite définissez votre alarme. Vous devriez essayer comme ceci:
AlarmManager 2AlarmsInWeekAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService/getActivity(context, int, intent, PendingIntent.FLAG_CANCEL_CURRENT);
2AlarmsInWeekAlarmManager.cancel(pendingIntent);
puis vous pouvez utiliser la méthode set ou setRepeating
. Dans votre cas, cela devrait être
2AlarmsInWeekAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, "timeInMillis", "repetitionTimeInMillis", pendingintent);
Cela garantit qu'avant de définir une alarme, toutes les alarmes précédemment annulées seront annulées avec le même PendingIntent
.
J'espère que vous l'avez!