0

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

アラームを受信するブロードキャスト レシーバーがあります。

4

2 に答える 2

4

アラームのリクエスト コードを保存する必要があります。ここでは 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);

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

ポイントを理解していただければ幸いです。

于 2012-02-22T05:38:50.510 に答える
0

時間とオブジェクトを追跡するために、何らかの形式のデータ構造に保存する必要がある場合があります。そうは言っても、以前に AlarmManager オブジェクトを保存しようとしたことはありません。

于 2012-02-22T05:41:45.017 に答える