Установите Alarm Manager на определенные дни недели - PullRequest
0 голосов
/ 20 марта 2019

Я работаю над приложением для 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 разных сигналов на основе еженедельного интервала - по одному на каждый день (что Я думаю, должен вести себя так же). И помните, это также для определенных дней в неделе. Итак, проблема в том, что если я устанавливаю будильник - по одному на каждый день - в тот же день, он работает, но на следующий день ничего не происходит. Кто-нибудь знает проблему? Спасибо!

...