我正在创建一个应用程序,我在其中创建事件并为事件设置警报。我需要知道如何取消闹钟。我遇到了麻烦。任何人都可以帮助我,谢谢。
更新
发布代码,请参阅下面的代码。 AlarmClass.java
Button buttonCancel = (Button) findViewById(R.id.btnCancel);
buttonCancel.setOnClickListener(new Button.OnClickListener()
{
@Override
public void onClick(View arg0)
{
Intent i = new Intent(AlarmClass.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(AlarmClass.this, 1, i, 0);
AlarmManager aManager = (AlarmManager) getSystemService(ALARM_SERVICE);
aManager.cancel(pendingIntent);
Toast.makeText(getApplicationContext(), "Alarm has been cancelled", Toast.LENGTH_SHORT).show();
}
});
答案 0 :(得分:1)
您只需取消AlarmManager的cancel()
方法报警即可。
AlarmManager am;
.
.
.
am.cancel ( PendingIntent operation );
例如
Intent intent = new Intent(this, AlarmReceive.class);
PendingIntent sender = PendingIntent.getBroadcast(this,0, intent, 0);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.cancel(sender);
您需要将PendingIntent
的对象传递给cancel()方法。
答案 1 :(得分:0)
要停止服务,您可以使用stopSelf();
答案 2 :(得分:0)
有一点需要注意,有点傻,就是AlarmManager会在调用cancel()时实际发送PendingIntent。为什么会这样,我不知道。不确定你是否注意到这一点,但我是。为了解决这个问题,我在PendingIntent本身调用了cancel():
myntent = new Intent(SetActivity.this,AlarmActivity.class);
pendingIntent = PendingIntent.getActivity(CellManage_AddShowActivity.this,
id, myntent,PendingIntent.FLAG_UPDATE_CURRENT);
pendingIntent.cancel();
alarmanager.cancel(pendingIntent);