Как я могу правильно передать уникальные дополнения к ожидающемуся намерению?
У меня возникла проблема с 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);
Ответы
Ответ 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 для поисковой активности?