Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.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 - Fatal编程技术网

Android 多重报警未取消

Android 多重报警未取消,android,Android,我正在尝试从警报列表中删除警报,但它没有被取消。我什么都试过了,但没有成功。我的代码如下 main活动 private void setAlarm(Calendar targetCal, int id) { txtSpeechInput.setText("Alarm set " + targetCal.getTime()+ ""); intent = new Intent(this, AlarmReceiverActivity.class); calendar_alar

我正在尝试从警报列表中删除警报,但它没有被取消。我什么都试过了,但没有成功。我的代码如下

main活动

private void setAlarm(Calendar targetCal, int id) {

    txtSpeechInput.setText("Alarm set " + targetCal.getTime()+ "");
    intent = new Intent(this, AlarmReceiverActivity.class);
    calendar_alarm.add(targetCal.getTime());
    Utils.setTimetosharedprefernces(targetCal.getTime(),MainActivity.this);

    Log.e("adding id is --", _id+"") ;

    pendingIntent = PendingIntent.getActivity(this,id,intent, PendingIntent.FLAG_CANCEL_CURRENT);
    alarmManager = (AlarmManager) getSystemService(Activity.ALARM_SERVICE);
    alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
}
这是我的取消报警活动

AlarmManager mgr = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
            Intent stopIntent = new Intent(this,MainActivity.class);
            PendingIntent stopPI = PendingIntent.getBroadcast(MainActivity.mContext, Alarm_id.get(positon),
                    stopIntent, PendingIntent.FLAG_CANCEL_CURRENT);
            flag=true;
            Toast.makeText(getApplicationContext(), "canceleddd", 1000).show();
            stopPI.cancel();
            mgr.cancel(stopPI);
            Alarm_id.remove(positon);
            calendar_alarm.remove(positon);
            deletealarm(positon);
            adapter.notifyDataSetChanged();
}
}

public void deletealarm(int key) {
    getSharedPreferences("Alarms", MODE_PRIVATE).edit()
            .remove("ID" + (key + 1)).apply();
    getSharedPreferences("AlarmsTime", MODE_PRIVATE).edit()
            .remove("THE_DATE" + (key + 1)).apply();
}
请尝试以下代码:

这对我很有用:

public void cancelAlarm(Context context, int reminderid)
    {
        try
        {
            Intent intentAlarm = new Intent(context, AlarmReceiver.class);
            PendingIntent morningIntent = PendingIntent.getBroadcast(context, reminderid, intentAlarm, PendingIntent.FLAG_CANCEL_CURRENT);
            AlarmManager alarmManager = (AlarmManager) (context.getSystemService(Context.ALARM_SERVICE));
            alarmManager.cancel(morningIntent);
            morningIntent.cancel();
        } catch (Exception e)
        {
            e.printStackTrace();
        }
    }
请通过调试确认您的id