因此,我离开Android开发已经有一段时间了,并且在android 8.0+之类的东西上发生了很多变化。
我曾经做过的事情和方式不再起作用或不推荐使用。这使我提出了这个问题。
我过去经常将警报服务与wakefulbroadcastreceiver一起使用,只是通过日期/时间选择器来计划将来的挂起意图。由于此后我用于此目的的东西已被弃用或更改,所以我想知道:
我现在该怎么做?
我已经花了两个下午的时间搜索有关如何安排将来通知的教程,但是所有教程都是从我能够使用“旧方法”开始的,其中有两个是我第一次学习时所认识的。 / p>
我已经看到了有关通知渠道的讨论以及有关工作人员安排的事情?
任何人都可以通过向我指示正确的方向来帮助我或提供有关如何构建通知计划程序的链接吗?
答案 0 :(得分:0)
Date date = new Date();
Calendar cal_now = Calendar.getInstance();
cal_now.setTimeInMillis(System.currentTimeMillis());
Calendar cal_alarm = Calendar.getInstance();
cal_alarm.setTimeInMillis(System.currentTimeMillis());
cal_now.setTime(date);
cal_alarm.setTime(date);
cal_alarm.set(Calendar.HOUR_OF_DAY, your_hour);
cal_alarm.set(Calendar.MINUTE, your_minute);
cal_alarm.set(Calendar.SECOND, 0);
cal_alarm.set(Calendar.MILLISECOND, 0);
if (am_pmFormatOne.equals("AM")) {
cal_alarm.set(Calendar.AM_PM, 0); // 0 = AM
} else {
cal_alarm.set(Calendar.AM_PM, 1); // 1 = PM
}
if (cal_alarm.before(cal_now)) {
log.error("Today's time is passed, set alarm for tomorrow..");
cal_alarm.add(Calendar.DATE, 1);// Today's time is passed, set alarm for tomorrow..
}
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), randomAlarmId, intent, 0);
alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
@Override
public void onReceive(Context context, Intent intent) {
Vibrator v = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
assert v != null;
v.vibrate(5000);
}