0

我有一个重复的警报设置,我的问题是取消后它不会取消(我正在使用 Log.v()

这就是我创建警报的方式(在 IntentService 中)

AlarmManager alarms = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
Intent intentToFire = new Intent(CAlarmReceiver.ACTION_CHECK_ALARM);
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, 0, intentToFire, 0);

private void rescheduleAlarm() {
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.SECOND, TIME_TO_REFRESH);
    alarms.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), CHECK_TIME,   alarmIntent);

}

然后在一个活动中我有一个按钮点击它调用这个代码

private OnClickListener btnCloseApplicationListener = new OnClickListener() {
    public void onClick(View v) {
        intentToCancel = new Intent(CAlarmReceiver.ACTION_CHECK_ALARM);
        alarmIntent = PendingIntent.getBroadcast(v.getContext(), 0, intentToCancel, 0);
        alarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        alarm.cancel(alarmIntent);
        finish();
    }
};

在完成()执行后,我一直在 DDMS 窗口中看到我的日志。我怎样才能取消它?提前致谢!

4

1 回答 1

1

尝试对意图使用相同的上下文。意图必须匹配,我认为您的问题是您在尝试取消警报时使用了不同的上下文。

alarmIntent = PendingIntent.getBroadcast(this, 0, intentToCancel, 0);
于 2011-07-11T09:18:18.753 回答