我想解除警报并在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();
}
});
运行时,应用程序崩溃了。 有人可以帮忙吗?
答案 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()将删除警报,因此它永远不会消失:
我无法确认它是否会在发出声音的过程中停止并取消闹钟,但你应该可以很容易地检查它。