2

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

更新
发布了代码,请参见下面的代码。报警类.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();
            }


        });
4

3 回答 3

1

cancel()您可以简单地通过AlarmManager 的方法取消警报。

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() 方法。

于 2012-09-03T03:38:42.730 回答
0

要停止服务,您可以使用stopSelf();

于 2012-09-03T07:02:19.280 回答
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);
于 2013-10-24T01:25:24.803 回答