取消警报

时间:2011-12-13 18:22:51

标签: android alarm

我是android和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文件中,该文件仅从列表中删除警报,但它不会阻止系统触发警报:

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);,以便提醒将从列表和警报管理器中删除。

我想知道我的第一个代码是否正确

1 个答案:

答案 0 :(得分:0)

要取消警报,Intents必须符合filterEquals(..)的定义。

这意味着意图动作,数据,类型,类和类别必须相同。此比较中未使用额外数据。