Я работаю над приложением для Android для работы в колледже и пытаюсь установить повторяющиеся будильники для определенных дней (или каждый день. Возможны оба варианта).
Вот мой код для этого:
public void createAlarms(List<Reminders> medWreminders) {
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
for (int i = 0; i < medWreminders.size(); i++) {
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
Calendar setcalendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, medWreminders.get(i).reminder.getHour());
calendar.set(Calendar.MINUTE, medWreminders.get(i).reminder.getMinutes());
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.DAY_OF_WEEK, medWreminders.get(i).reminder.getDayInt());
// cancel already scheduled reminders
notificationHelper.cancelNotification(this, medWreminders.get(i).reminder.getId());
if (calendar.before(setcalendar)) {
calendar.add(Calendar.DATE, 1);
}
// enable receiver
ComponentName receiver = new ComponentName(this,
AlertReceiver.class);
PackageManager pm = this.getPackageManager();
pm.setComponentEnabledSetting(receiver,
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
Intent intent = new Intent(this, AlertReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this,
medWreminders.get(i).reminder.getId(), intent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.setInexactRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),
AlarmManager.INTERVAL_DAY * 7, pendingIntent);
}
Важно отметить, что если будильник предназначен для ежедневного использования, вместо того, чтобы устанавливать один повторяющийся сигнал на ежедневный интервал (по другим причинам), я устанавливаю 7 разных сигналов на основе еженедельного интервала - по одному на каждый день (что Я думаю, должен вести себя так же). И помните, это также для определенных дней в неделе.
Итак, проблема в том, что если я устанавливаю будильник - по одному на каждый день - в тот же день, он работает, но на следующий день ничего не происходит.
Кто-нибудь знает проблему? Спасибо!