Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.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
Java AlarmManager第二天不开火_Java_Android_Alarmmanager - Fatal编程技术网

Java AlarmManager第二天不开火

Java AlarmManager第二天不开火,java,android,alarmmanager,Java,Android,Alarmmanager,我已经设置了AlarmManager的特定时间和更新时间,当旧的一个被解雇。但问题是AlarmManager并没有在下一个日期触发,但若我手动更改日期,则其工作,但若自动更改,则不会触发 AlarmManager alarm = (AlarmManager) context.getSystemService(context.ALARM_SERVICE); Intent intent = new Intent(context, BrSendSMS.class); intent.p

我已经设置了AlarmManager的特定时间和更新时间,当旧的一个被解雇。但问题是AlarmManager并没有在下一个日期触发,但若我手动更改日期,则其工作,但若自动更改,则不会触发

 AlarmManager alarm = (AlarmManager) context.getSystemService(context.ALARM_SERVICE);
    Intent intent = new Intent(context, BrSendSMS.class);
    intent.putExtra("schedulesmsid", schedulesmsid);
    int schedulelistid = -1;
    try
    {
        schedulelistid = Integer.valueOf(schedulesmsid);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(context, schedulelistid, intent, Intent.FLAG_ACTIVITY_MULTIPLE_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
        alarm.cancel(pendingIntent);
        alarm.set(AlarmManager.RTC_WAKEUP, scheduledtime, pendingIntent);
    } catch (NumberFormatException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

尝试使用setRepeating

使用下面的代码

                Calendar alarmTime=Calendar.getInstance();  
                alarmTime.set(Calendar.HOUR_OF_DAY,18);
                alarmTime.set(Calendar.MINUTE, 0);
                alarmTime.set(Calendar.SECOND, 0);          
                Intent alarmIntent = new Intent(MainActivity.this,AlarmReceiver.class);
                PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, alarmIntent, 0);
                AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
                Long time = alarmTime.getTimeInMillis() + (24 * 60 * 60 * 1000 * 2);
                alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, time,24 * 60 * 60 * 1000 * 2, pendingIntent);

我希望它能对您有所帮助。

您如何更新警报时间?在我的广播接收器中,我正在设置新时间您确定日期有效吗?另一个可能的问题:您是否正在关闭设备?如果设备关闭,警报将被终止,因此您需要启动完成的接收器。日期是有效的,因为如果我仅手动更改其工作状态和设备id,我希望它在特定时间重复。我可以知道重复的时间间隔吗?取决于每日、每周或每月的重复类型、触发时间、间隔时间、,intervalMillis根据您自己的时间间隔设置持续时间我不想让同一台启动,比如说我想设置3天的sms计划。所以,当第一个是火灾时,我取消所有警报并设置新的警报