如何在android中取消闹钟?

时间:2012-09-03 03:33:31

标签: android alarm cancel-button

我正在创建一个应用程序,我在其中创建事件并为事件设置警报。我需要知道如何取消闹钟。我遇到了麻烦。任何人都可以帮助我,谢谢。

更新
发布代码,请参阅下面的代码。 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();
            }


        });

3 个答案:

答案 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);