Всем привет, я пытаюсь установить несколько AlarmManager с разным временем и использую этот код

public void StartAppNotifications( String title ,int h ,int m ) {

        Calendar calendar = Calendar.getInstance();
        calendar.set(Calendar.HOUR_OF_DAY, h);
        calendar.set(Calendar.MINUTE, m);
        calendar.set(Calendar.SECOND, 0);


        if (!calendar.before(Calendar.getInstance())) {

            Intent intent = new Intent(getApplicationContext(), AlertReceiver.class);
            intent.putExtra("title", title);
            PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_UPDATE_CURRENT);
            AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
            alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);

        }

    }

он работает один раз, если этот метод вызывается один раз, но если вызывается более одного раза, он не работает Я пытаюсь называть это так

StartAppNotifications("alarm text" ,18 ,30);
0
Mohammed A Sallout 24 Окт 2019 в 11:24

1 ответ

Лучший ответ

Из doc о AlarmManager, когда вы устанавливаете второй будильник, который использует тот же ожидает намерения, он заменяет исходный сигнал тревоги

Следовательно, вам необходимо использовать разные PendingIntent для каждого из ваших повторяющихся сигналов тревоги, например, используя флаг PendingIntent.FLAG_ONE_SHOT для создания вашего PendingIntent

PendingIntent pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 100, intent, PendingIntent.FLAG_ONE_SHOT);
0
matdev 25 Окт 2019 в 09:19