web-dev-qa-db-ja.com

Android AlarmManager:設定されたすべてのアラームをキャンセルする方法はありますか?

私は、(特定の時間と分で)曜日ごとに2つのアラームを設定するアプリを構築しています。アラームは、週ごとに永久に繰り返されます。

ユーザーがアラームを変更した場合、以前に設定したアラームをキャンセルする必要があります。

アプリケーションによって設定されたすべてのアラームを単にキャンセルする方法はありますか?

15
Lisa Anne

あなたは目を引くことができると思います: AlarmManager.Cancel

そしてその質問/回答: Android:AlarmManagerで設定されたすべてのPendingIntentsを取得

そこに記載されているように、AlarmManagerにPendingIntentが含まれていることを通知するように要求することはできません。しかし、キャンセルしたいものに似たPendingIntentを作成できると思います;).

10
BigbangRevo

以前のアラームをキャンセルする場合、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の以前のすべてのアラームがキャンセルされます。

あなたがこれを手に入れたことを願っています!

17
imthegiga