删除警报:Android

删除警报:Android,android,Android,下面是我的addAlarm()方法: 此代码工作正常,但我希望使用以下代码删除此alaram: Intent intent = new Intent(this, ALReciver.class); PendingIntent sender = PendingIntent.getBroadcast(this,10, intent,PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager alarmManager = (Al

下面是我的addAlarm()方法:

此代码工作正常,但我希望使用以下代码删除此alaram:

 Intent intent = new Intent(this, ALReciver.class);
        PendingIntent sender = PendingIntent.getBroadcast(this,10, intent,PendingIntent.FLAG_CANCEL_CURRENT);

        AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);

        alarmManager.cancel(sender);

此代码不起作用。。我不明白我做错了什么?

将标志从
pendingent.Flag\u CANCEL\u CURRENT
更改为
pendingent.Flag\u UPDATE\u CURRENT
您可以取消报警。为此,您需要创建相同的意图:

alarmMgr.cancel(alarmIntent);
答复:

PendingIntent sender = PendingIntent.getBroadcast(this,10, intent,PendingIntent.FLAG_CANCEL_CURRENT);


这是我的开始示例,取消

我也有同样的意图。但你的错误是这样的。挂起的意图给予公共按钮单击时间执行操作作为开始,并取消使用该意图,然后成功

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


        Intent alarmIntent = new Intent(Alaram.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(MyActivity.this, 0, alarmIntent, 0);

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

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


    }

    public void start() {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        int interval = 8000;

        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
        Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
    }

    public void cancel() {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        manager.cancel(pendingIntent);
        Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show();
    }

}

这对我来说很好。你试试这一个。

@RohitRananaware尝试在开始和取消中使用完全相同的意图。@Rohit你试试这一个吗?谢谢@bhuvaneswharan Vellingiri。我没有使用此代码,因为我的问题是通过以下代码解决的:pendingent pendingent=pendingent.getBroadcast(this.getApplicationContext(),10,intent,pendingent.FLAG_UPDATE_CURRENT | intent.FILL_IN_DATA);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this.getApplicationContext(), 10 , intent, PendingIntent.FLAG_UPDATE_CURRENT|  Intent.FILL_IN_DATA);
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_my_alarm);


        Intent alarmIntent = new Intent(Alaram.this, AlarmReceiver.class);
        pendingIntent = PendingIntent.getBroadcast(MyActivity.this, 0, alarmIntent, 0);

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

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


    }

    public void start() {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        int interval = 8000;

        manager.setInexactRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), interval, pendingIntent);
        Toast.makeText(this, "Alarm Set", Toast.LENGTH_SHORT).show();
    }

    public void cancel() {
        AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        manager.cancel(pendingIntent);
        Toast.makeText(this, "Alarm Canceled", Toast.LENGTH_SHORT).show();
    }

}