java - 设置待处理意图/广播接收器的问题
问题描述
我想在一天的某个时间发送通知。为此,我制作了一个 BroadcastReceiver。但我有一个问题,广播接收器没有在我想要的时间执行,而是随机执行(例如,当我启动应用程序时)这是我的主要活动中的代码,它设置了待处理的意图和警报管理器:
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
推荐阅读
- c# - 将数组添加到方法
- entity-framework - HttpResponse 不包含 Dot Net Core 中 BinaryWrite() 的定义
- django - django-filter:如何强制使用下拉菜单?
- android - 当设备的位置关闭时反应本地位置
- mysql - Innodb 不允许我更新复合主键?
- git - 在git中查找日期后两个分支之间修改的java文件
- sql - 如何在bigquery中将纪元转换为日期时间?
- python - Numpy的polyfit函数低估了线性回归线的斜率?
- html - 导航链接使用
- sdn - Neon、Fluorine-SR2 和 Oxygen-SR4 有什么区别?