设置后如何取消报警?

时间:2011-10-16 15:46:00

标签: android

我有一个使用我创建的SQLite数据库设置信息的方法。

public void scheduleItem(Long textId, Calendar when){
    Intent i = new Intent(mContext, onAlarmReceiver.class);
    i.putExtra(DbAdapter.KEY_ROWID, textId);
    PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, i, PendingIntent.FLAG_ONE_SHOT);
    mAlarmManager.set(AlarmManager.RTC_WAKEUP, when.getTimeInMillis(), pi);
    Log.e("SchedulerManager", "Task scheduled");

现在您看到这会响应数据库。现在,如果用户删除了数据库中的项目。我不希望仍然为已删除的项目设置闹钟。

如何使用在scheduleItem()方法中作为参数的Long textId撤回警报?

编辑:我刚刚创建了此方法来取消当前待处理的意图。

也许会这样做。

public void cancelAlarm(Long textId){
    Intent g = new Intent(mContext, onAlarmReceiver.class);
    g.putExtra(SmsDbAdapter.KEY_ROWID, textId);

    PendingIntent pi = PendingIntent.getBroadcast(mContext, 0, g, 0);

    mAlarmManager.cancel(pi);

}

1 个答案:

答案 0 :(得分:1)

您必须调用cancel方法:http://developer.android.com/reference/android/app/AlarmManager.html#cancel(android.app.PendingIntent

使用与之前设置的警报管理器相同的PendingIntent。 (或者更好,与你之前设定的意图相匹配的意图)