私は、(特定の時間と分で)曜日ごとに2つのアラームを設定するアプリを構築しています。アラームは、週ごとに永久に繰り返されます。
ユーザーがアラームを変更した場合、以前に設定したアラームをキャンセルする必要があります。
アプリケーションによって設定されたすべてのアラームを単にキャンセルする方法はありますか?
あなたは目を引くことができると思います: AlarmManager.Cancel
そしてその質問/回答: Android:AlarmManagerで設定されたすべてのPendingIntentsを取得
そこに記載されているように、AlarmManagerにPendingIntentが含まれていることを通知するように要求することはできません。しかし、キャンセルしたいものに似たPendingIntentを作成できると思います;).
以前のアラームをキャンセルする場合、PendingIntent
ではフラグはPendingIntent.FLAG_CANCEL_CURRENT
。すでに作成されている場合、新しいPendingIntent
の生成を防ぎます。アラームを設定する前に、同じPendingIntent
をキャンセルして、アラームを設定してください。次のように試してください:
AlarmManager 2AlarmsInWeekAlarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getService/getActivity(context, int, intent, PendingIntent.FLAG_CANCEL_CURRENT);
2AlarmsInWeekAlarmManager.cancel(pendingIntent);
次に、setまたはsetRepeating
メソッドを使用できます。あなたの場合、それは
2AlarmsInWeekAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, "timeInMillis", "repetitionTimeInMillis", pendingintent);
これにより、アラームを設定する前に、同じPendingIntent
の以前のすべてのアラームがキャンセルされます。
あなたがこれを手に入れたことを願っています!