解除和删除警报

时间:2011-12-06 06:48:41

标签: android

我想解除警报并在2个不同的活动中删除警报。我将使用哪些功能? alarmmanager.cancel()解除或删除警报?

我写了这段代码:

Button DeleteButton = (Button) this.findViewById(R.id.dismiss_button);
    DeleteButton.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            // Build Intent and Pending Intent to Set Snooze Alarm
            Intent AlarmIntent = new Intent(AlarmActivity.this,
                    AlarmReceiver.class);
            AlarmManager AlmMgr = (AlarmManager) getSystemService(ALARM_SERVICE);
            PendingIntent Sender = PendingIntent.getBroadcast(
                    AlarmActivity.this, 0, AlarmIntent, 0);
            AlmMgr.cancel(Sender);
            finish();

        }

    });

运行时,应用程序崩溃了。 有人可以帮忙吗?

1 个答案:

答案 0 :(得分:2)

我认为您需要先使用挂起的意图调用alarmManager的set方法,然后才能取消它,例如

//Set an alrm for 5 seconds from now
AlmMgr.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + 5000 ,Sender)
//Do stuff
...
//Cancel alarm
AlmMgr.cancel(Sender)

如果没有看到你的LogCat输出很难确定,但我猜想在设置之前尝试取消警报会引发异常。根据API,.cancel()将删除警报,因此它永远不会消失:

http://developer.android.com/reference/android/app/AlarmManager.html#cancel(android.app.PendingIntent

我无法确认它是否会在发出声音的过程中停止并取消闹钟,但你应该可以很容易地检查它。

相关问题