Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/232.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在android中取消报警?_Android_Alarm_Cancel Button - Fatal编程技术网

如何在android中取消报警?

如何在android中取消报警?,android,alarm,cancel-button,Android,Alarm,Cancel Button,我正在开发一个应用程序,我可以在其中创建事件并为事件设置警报。我需要知道如何取消闹钟。我有麻烦了。任何人都可以帮我,谢谢 更新 发布代码,请参见下面的代码。AlarmClass.java Button buttonCancel = (Button) findViewById(R.id.btnCancel); buttonCancel.setOnClickListener(new Button.OnClickListener() { @O

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

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


        });

您可以通过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);

您需要将
pendingent
的对象传递到cancel()方法。

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

需要注意的一点是,AlarmManager实际上会在调用cancel()时发送PendingEvent,这有点愚蠢。为什么会这样,我不知道。不确定你是否注意到了,但我注意到了。要解决此问题,我在PendingEvent本身上调用了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);

我已经在我的应用程序中对其进行了编码,但没有成功。我会发布我的代码,看看我的代码中是否有任何错误或遗漏。什么??您已启动闹钟并在下次取消它?那么警报的目的是什么?我只是想测试一下,如果我取消了为用户创建的事件设置的警报,那么,为什么您只在下一行取消它?单击另一个按钮取消它。我有另一个按钮来设置闹钟。此按钮用于取消正在设置的报警。但我们的代码是一样的。所以我的问题是如何取消警报。