我想在一天的某个时间发送通知。 为此我做了一个广播接收器。 但是我有一个问题,广播接收器没有在我想要的时间执行,而是在随机的时间执行(例如,当我启动应用程序时)。下面是我的主activity中的代码,它设置了挂起的意图和一个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);
您需要在设备重新启动时设置启动报警服务。 尝试下面的链接,这将帮助你。 我用同样的方法实现了。
https://www.stacktips.com/tutorials/android/repeat-alarm-example-in-Android