2012-02-22 6 views
0

私は、異なる時刻にアラームを設定しています。私は特定のアラームを削除したい。 Ex。私はdiiferents回で100のアラームを設定しました、今私は2012年2月25日10.45 AMに設定されたアラームを削除したいと思います。どうやってやるの。特定のアラームをキャンセルする

アラームを設定するためのコードを記述しました。

 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); 

私はアラームを受信するための放送受信機を持っています。

+0

Stackoverflowを検索しましたか?これまでに回答していますか? – st0le

答えて

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); 

をあなたはそうしないとアラームが古いリクエストコードで設定し、新しい時間で再スケジュールされ、異なるアラームのリクエストコードのそれぞれがユニークでなければならないことに注意する必要があります。

あなたはポイントを得ることを望みます。

+0

@kamlesh:私の編集した答えをご覧ください。 – Hiral

+0

si私のデータベースにalarmId(RequestCode)のようなものを保存する必要があります –

+0

はい...単純に、alarmidとtimeという2つの列を持つテーブルを作成します。特定の時間のためのアラームを見つける。それはあなたにIDを与えるでしょう、そして、あなたはアラームをキャンセルするためにそれを使用することができます。 – Hiral

0

時間とオブジェクトを追跡するために、データ構造の何らかの形式で格納する必要があります。つまり、以前はAlarmManagerオブジェクトの格納を試していませんでした。

関連する問題