如何在android中停止报警

如何在android中停止报警,android,alarmmanager,android-pendingintent,Android,Alarmmanager,Android Pendingintent,在我的主要活动中,它有一个按钮。在它的onclick listener中,我调用函数来设置警报。警报正在工作,但我无法停止。有人能帮我吗 MainActivity.java public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState);

在我的主要活动中,它有一个按钮。在它的onclick listener中,我调用函数来设置警报。警报正在工作,但我无法停止。有人能帮我吗

MainActivity.java

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                setalarm();
            }


        });
    }

    private void setalarm() {

        Calendar cal=Calendar.getInstance();
        // cal.set(Calendar.MONTH,6);
        // cal.set(Calendar.YEAR,2013);
        // cal.set(Calendar.DAY_OF_MONTH,12);
        cal.set(Calendar.HOUR_OF_DAY,18);
        cal.set(Calendar.MINUTE,32);
        Intent intent = new Intent(this, Mote.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT|  Intent.FILL_IN_DATA);

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

        alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),pendingIntent );
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
        Toast.makeText(this, "Alarm SET.", Toast.LENGTH_LONG).show();
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.activity_main, menu);
        return true;
    }
}
Mote.java:

public class Mote  extends BroadcastReceiver{

    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();
        int icon = R.drawable.ic_launcher;
        CharSequence tickerText = "Hello you have to take medicine I am Nitin Sharma";
        long when = System.currentTimeMillis();

        CharSequence contentTitle = "My notification";
        CharSequence contentText = "Hello World!";

        final int NOTIF_ID = 1234;
        NotificationManager notofManager = (NotificationManager)context. getSystemService(Context.NOTIFICATION_SERVICE);
        Intent notificationIntent = new Intent(context, Alset.class);
        PendingIntent contentIntent = PendingIntent.getActivity(context,0, notificationIntent, 0);
        Notification notification = new Notification(icon, tickerText,when );
        notification.setLatestEventInfo(context, contentTitle, contentText, contentIntent);
        notification.flags = Notification.FLAG_INSISTENT;
        notification.defaults |= Notification.DEFAULT_SOUND;
        notofManager.notify(NOTIF_ID,notification);

        Toast.makeText(context, "Alarm worked.", Toast.LENGTH_LONG).show();

        Intent i = new Intent(context,Alset.class);
        i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        context.startActivity(i);
Alset.java:

public class Alset extends Activity{

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activitystop); 
        Log.e("IM here ","Im here");

        findViewById(R.id.button1).setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                Toast.makeText(Alset.this, "Stop the alrm now", Toast.LENGTH_LONG).show();
            }
        });
    }   
}
一旦警报启动,我将在接收器的
OnReceive()
方法中得到回调。从那里我要去活动区,在那里我有一个停止按钮。我该如何从这里停止闹钟


注意:-我正在硬编码设置警报的时间。

您可以这样取消警报:

     Intent intent = new Intent(this, Mote.class);
     PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 1253, intent, 0);
     AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
     alarmManager.cancel(pendingIntent);

此外,您应该删除
意图。在设置报警的代码中,从调用
getBroadcast()
的过程中填写数据。

您需要从报警管理器中取消报警,请尝试此操作

Intent intent = new Intent(this, Mote.class);
AlarmManager alarmManager = (AlarmManager) _cntx.getSystemService(Context.ALARM_SERVICE);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 1253, intent, PendingIntent.FLAG_UPDATE_CURRENT|  Intent.FILL_IN_DATA);          
alarmManager.cancel(pendingIntent);

您需要从alarm manager中取消报警try===AlarmManager AlarmManager=(AlarmManager)\u cntx.getSystemService(Context.alarm\u服务);PendingEvent PendingEvent=PendingEvent.getBroadcast(this.getApplicationContext(),1253,intent,PendingEvent.FLAG_UPDATE_CURRENT | intent.FILL_IN_DATA);alarmManager.cancel(挂起事件)@droid_dev如果您遇到问题,请打开一个新问题,发布您的代码,并解释什么不起作用。社区可以帮助您。alarmManager.cancel(PendingEvent)将从alarmManager中取消警报。它不会杀死已激发的活动。我还提出了一个问题,想知道如何杀死被激发的活动。如果有人知道答案,请参考“请回复”我的初始意图添加一个动作,因此为了使这起作用,我添加了相同的动作添加到意图中。@Favolas是的,当然。您需要创建一个匹配的
意图
,因此操作、类别、数据和组件信息都必须匹配。@DavidWasser Hey mate您能帮我解决一个我已经遇到了2-3天的问题吗,这是我的问题,您能帮我解决这个@user1140237吗