цель, которую я пишу этот код, состоит в том, чтобы убедиться, что мои приложения будут уведомлять пользователя в определенное время, и приложения будут повторять одно и то же уведомление каждый день, начиная с 7 часов утра.
Однако я попытался использовать эту функцию (как показано ниже). Но похоже, что это не сработает.
calender.add (ДАТА, 1)
На самом деле я хочу создать автоматическое c уведомление. Информация о лекарствах и количестве ежедневных повторений вводится пользователем.
Так что я хочу сделать для оператора if, он будет сравнивать, является ли текущий час между 7:00 - 20:00. ,
В противном случае оператор должен сравнивать текущий час после 20:00 или нет, если да, то календарь добавит еще 1 день. Так, чтобы приложения выскакивали то же самое уведомление на следующий день в 7:00.
А для оператора else необходимо проверить, является ли текущий час до 7:00 или нет. Если да, приложения будут отображать уведомление сразу после того, как текущий час будет равен 7:00
Но оператор else if не сработал, как я ожидал. Я имею в виду, если я установлю уведомление прямо сейчас, в 22:00, приложения не уведомят меня на следующий день (в 7:00).
Итак, я хотел бы спросить, может ли кто-нибудь из вас помочь мне исправить мой код, как показано ниже. Сегмент if и else работает нормально. Но в противном случае утверждение кажется не сработает.
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Calendar calendar = Calendar.getInstance();
Calendar now = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
//repeat on 7am
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 0);
//check current hour
int timeOfDay = now.get(Calendar.HOUR_OF_DAY);
//to check if current hour is after 7pm
Calendar later = Calendar.getInstance();
later.set(Calendar.HOUR_OF_DAY, 20);
later.set(Calendar.MINUTE, 00);
later.set(Calendar.SECOND, 0);
if (timeOfDay >= 7 && timeOfDay <= 20) {
//notification's process
}
else if (now.after(later)) {
Log.d("Hey", "Added a day");
calendar.add(Calendar.DATE, 1);
calendar.set(Calendar.HOUR_OF_DAY, 7);
calendar.set(Calendar.MINUTE, 00);
calendar.set(Calendar.SECOND, 0);
this.context = context;
prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notification = new NotificationCompat.Builder(context);
name = prefs.getString("name" + count, "");
hours = prefs.getInt("hora" + count, 8);
minutes = prefs.getInt("minuto" + count, 0);
Intent newIntentKill = new Intent(context, Broadcast.class);
Bundle saco = new Bundle();
saco.putInt("count", count);
saco.putBoolean("shownBefore", true);
newIntentKill.putExtras(saco);
PendingIntent pendingIntentKill = PendingIntent.getBroadcast(context, count, newIntentKill, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntentKill);
} else {
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntentKill);
}
Log.d("Alarm", "Alarms set for everyday 7 am.");
}
else {
this.context = context;
prefs = context.getSharedPreferences("prefs", Context.MODE_PRIVATE);
nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notification = new NotificationCompat.Builder(context);
name = prefs.getString("name" + count, "");
hours = prefs.getInt("hora" + count, 8);
minutes = prefs.getInt("minuto" + count, 0);
Intent newIntentKill = new Intent(context, Broadcast.class);
Bundle saco = new Bundle();
saco.putInt("count", count);
saco.putBoolean("shownBefore", true);
newIntentKill.putExtras(saco);
PendingIntent pendingIntentKill = PendingIntent.getBroadcast(context, count, newIntentKill, PendingIntent.FLAG_UPDATE_CURRENT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
alarmManager.setExact(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntentKill);
}
else {
alarmManager.set(AlarmManager.RTC, calendar.getTimeInMillis(), pendingIntentKill);
}
Log.d("Alarm", "Alarms set for everyday 7 am.");
}
Итак, заранее благодарю за помощь. Я был бы очень признателен.