質問
私は異なる時間にアラームを設定しています。粒子アラームを削除したいです。元。 Diiferents Timesで100のアラームを設定しましたが、2012年2月25日午前10時45分にアラームセットを削除したいと思います。どうやってやるの。
アラームを設定するための次のコードを書きました。
final AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
GregorianCalendar gc=new GregorianCalendar();
gc.set(2012, 1, 22, 10, 42,0);
Intent intent = new Intent(this, AlarmService.class);
gc.set(Calendar.AM_PM,0);
final PendingIntent sender = PendingIntent.getBroadcast(this, 1, intent, PendingIntent.FLAG_UPDATE_CURRENT);
am.set(AlarmManager.RTC_WAKEUP, gc.getTimeInMillis(), sender);
アラームを受信するためのブロードキャストレシーバーがあります。
解決
リクエストコードのアラームを保存する必要があります。つまり、ここでは1つです。 PendingIntent.getBroadcast()メソッドで渡す2番目のパラメーターは、特定のアラームのリクエストコードです。そして、以下を使用してキャンセルできます。
AlarmManager am = (AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, OneShotAlarm.class); //OneShotAlarm is the broadcast receiver you use for alarm
PendingIntent sender = PendingIntent.getBroadcast(context,alarm_request_code, intent, 0);
am.cancel(sender);
さまざまなアラームの各リクエストコードが一意であることに注意してください。そうしないと、古いリクエストコードで設定した新しい時間でアラームが再スケジュールされます。
あなたがポイントを得ることを願っています。
他のヒント
時間とオブジェクトを追跡するには、何らかの形のデータ構造に保存する必要がある場合があります。そうは言っても、私は以前にアラームマネージャーオブジェクトを保存しようとしていません。
所属していません StackOverflow