Подтвердить что ты не робот

Как я могу правильно передать уникальные дополнения к ожидающемуся намерению?

У меня возникла проблема с alarmManager и ожидающим намерения с дополнительными функциями, которые будут вместе с ним.

Если я установил несколько аварийных сигналов, они погаснут, однако дополнительные функции остаются неизменными.

Я уже прочитал следующие вопросы:

и я пробовал:

  • присвоение уникального идентификатора каждому ожидающемуся намерению и
  • используя все флаги ожидающих намерений,

все безрезультатно. Я не знаю, почему это не сработает.

Вот фрагмент кода:

Intent intent = new Intent(con,
                    AppointmentNotificationReciever.class);
            intent.putExtra("foo", bar.toString());


            int id = randomNum;

            PendingIntent sender = PendingIntent.getBroadcast(con, id,
                    intent, PendingIntent.FLAG_UPDATE_CURRENT);


            AlarmManager am = (AlarmManager) con.getSystemService(Context.ALARM_SERVICE);
            am.set(AlarmManager.RTC_WAKEUP, scheduleExecution, sender);
4b9b3361

Ответ 1

Возможно, здесь есть два разных вопроса:

1) Если вы уже создали свой PendingIntent раньше, и он "соответствует" существующему PendingIntent, тогда вы должны указать флаг PendingIntent.FLAG_UPDATE_CURRENT или он не будет передавать дополнительные функции. "Соответствие" основано на критериях, используемых Intent.filterEquals(), поэтому обязательно прочитайте там документы и убедитесь, что вы понимаете данные, действие, тип и т.д.

2) Я прочитал, что если вы НЕ устанавливаете действие по своему намерению, то оно не будет распространять дополнительные функции, поэтому, возможно, попробуйте make.setAction( "com.blah.Action" ).

Ответ 2

У меня возникла аналогичная проблема. Использование PendingIntent.FLAG_ONE_SHOT может решить проблему, потому что это означает, что PendingActivity не будет повторно использоваться.

Ответ 3

Это может быть связано с действием Activity:: getIntent, возвращающим исходное намерение Activity с заданными флагами/фильтрами намерений.

Если это так, вам нужно посмотреть Activity:: onNewIntent. Переопределите этот метод, и намерение, переданное этой функции, должно быть новым намерением с надлежащими дополнениями и т.д.

Кредит относится к этому вопросу, который помог мне решить мою проблему: Почему Intent.getAction() null для поисковой активности?