Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/196.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 设置挂起的意图/广播接收器时出现问题_Java_Android_Broadcastreceiver_Alarmmanager_Android Pendingintent - Fatal编程技术网

Java 设置挂起的意图/广播接收器时出现问题

Java 设置挂起的意图/广播接收器时出现问题,java,android,broadcastreceiver,alarmmanager,android-pendingintent,Java,Android,Broadcastreceiver,Alarmmanager,Android Pendingintent,我想在每天的某个时间发送通知。 为此我做了一个广播接收机。 但我有一个问题,广播接收器不会在我想要的时间执行,而是在随机时间执行(例如,当我启动应用程序时) 以下是我的主要活动中的代码,用于设置挂起的意图和AlarmManager: Intent notifyIntent = new Intent(this, ReminderBroadcast.class); PendingIntent pendingIntent = PendingIntent.getBroadcast

我想在每天的某个时间发送通知。 为此我做了一个广播接收机。 但我有一个问题,广播接收器不会在我想要的时间执行,而是在随机时间执行(例如,当我启动应用程序时) 以下是我的主要活动中的代码,用于设置挂起的意图和AlarmManager:

        Intent notifyIntent = new Intent(this, ReminderBroadcast.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(this, NOTIFICATION_REMINDER, notifyIntent, PendingIntent.FLAG_UPDATE_CURRENT);
    AlarmManager alarmManager = (AlarmManager) getApplicationContext().getSystemService(Context.ALARM_SERVICE);
    String notificationTime = SettingsSharedPreferences.getDailyNotificationTime(getApplicationContext());

    //sets the notification time, which is saved in Shared Preferences
    SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");
    Calendar notificationTimeCalendar = Calendar.getInstance();
    notificationTimeCalendar.setTimeInMillis(System.currentTimeMillis());
    try {
        notificationTimeCalendar.setTime(sdf.parse(notificationTime));
    } catch (ParseException e) {
        e.printStackTrace();
    }

    //sets AlarmManager
    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, notificationTimeCalendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
    SettingsSharedPreferences.setNotificationTimeChanged(MainActivityTaskAddListNavigation.this, false);

您需要在设备重新启动时设置启动报警服务。 尝试下面的链接,这将帮助你。我用同样的方法实现了


我已经实现了一个DeviceBootReceiver。