質問

私は異なる時間にアラームを設定しています。粒子アラームを削除したいです。元。 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);

さまざまなアラームの各リクエストコードが一意であることに注意してください。そうしないと、古いリクエストコードで設定した新しい時間でアラームが再スケジュールされます。

あなたがポイントを得ることを願っています。

他のヒント

時間とオブジェクトを追跡するには、何らかの形のデータ構造に保存する必要がある場合があります。そうは言っても、私は以前にアラームマネージャーオブジェクトを保存しようとしていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top