2011-12-13 12 views
1

私はアンドロイドとJavaプログラミングには新しく、複数のアラームを発生させて毎日繰り返すアプリケーションがあります。それは正常に動作しているが、私の問題は、私は翌日発射を続けるアラームを削除するときです。彼らは、メソッドをキャンセル使用するように私に言った、私はこの機能を作成し、次のようにアラームをキャンセルする

public void deleteReminder(Long reminderId){ 
    Intent d = new Intent(mContext, Daily_OnAlarmReceiver.class); 
    d.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId); 

    int Daily_requestCode = reminderId.intValue(); 


    PendingIntent pid = PendingIntent.getBroadcast(mContext, Daily_requestCode, d, PendingIntent.FLAG_CANCEL_CURRENT); 

    mAlarmManager.cancel(pid); 
} 

私のセットのリマインダー機能を:

public void setReminder(Long reminderId, Calendar when) { 

     Intent i = new Intent(mContext, Daily_OnAlarmReceiver.class); 
     i.putExtra(RemindersDbAdapter.KEY_ROWID_DAILY, (long)reminderId); 
     int Daily_requestCode = reminderId.intValue(); 

     PendingIntent pi = PendingIntent.getBroadcast(mContext, Daily_requestCode, i, PendingIntent.FLAG_CANCEL_CURRENT); 
     mAlarmManager.setRepeating(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi); 
} 

を、それらの両方がAlarmManager.javaファイルに配置されています。

次のコードは、リストからアラームを削除し、別のjavaファイルであるが、それは、アラームを発射からシステムを防ぐdoesntの:

public boolean onContextItemSelected(MenuItem item) { 
      switch(item.getItemId()) { 
      case R.id.menu_delete: 

      AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
       mDbHelper.deleteDailyReminder(info.id); 
       fillData(); 
       return true; 
     } 
      return super.onContextItemSelected(item); 
     } 

私の質問は、前のコードでこのnew Daily_ReminderManager(this).deleteReminder(mRowId);を呼び出す方法ですリマインダーはリストからもアラームマネージャーからも削除されます。

と私の最初のコードはfilterEquals(..)で定義されているようIntentsが一致しなければならない警報を解除するために

答えて

0

正しい場合、私は思ったんだけど。

これは、インテントのアクション、データ、タイプ、クラス、およびカテゴリが同じでなければならないことを意味します。この比較では、余分なデータは使用されません。

+0

私の場合、filterEqualsの使い方は? – zoza

+0

あなたはしません。これは、インテントをキャンセルするためにインテントを比較するときに、AlarmManagerが使用するものです。 –

+0

リストから削除されたアラームをサービスからキャンセルするには、自分のコードで何をすべきですか? – zoza

関連する問題