¿Cómo puedo pasar correctamente los extras exclusivos a una intención pendiente?

Tengo un problema con alarmManager y la intención pendiente con extras que irán junto con él.

Si configuro múltiples alarmas, se apagarán, sin embargo los extras permanecen igual.

Ya he leído estas preguntas:

  • Problema pendiente de notificación de Android android
  • Android mantiene caché mis intenciones Extras, ¿cómo declarar una intención pendiente que mantiene extras frescos?

Y he intentado:

  • Asignar un identificador único a cada intención pendiente y
  • Utilizando todos los indicadores de intención pendientes,

todo fue en vano. No tengo ni idea de por qué no funcionará.

He aquí un fragmento de código:

 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); 

    Posiblemente dos cuestiones diferentes aquí:

    1) Si ya ha creado su PendingIntent antes y "coincide" con un PendingIntent existente, debe especificar el indicador PendingIntent.FLAG_UPDATE_CURRENT o no pasará los extras. Una "coincidencia" se basa en los criterios que utiliza Intent.filterEquals (), así que lea definitivamente los documentos allí y asegúrese de entender los datos, acción, tipo, etc.

    2) He leído que si NO estableces una acción sobre tu intención, entonces no propagará los extras, así que quizás intente intent.setAction ("com.blah.Action").

    Me he encontrado con un problema similar. El uso de PendingIntent.FLAG_ONE_SHOT puede solucionar el problema, ya que significa que PendingActivity no se reutilizará.

    Esto podría deberse a Actividad :: getIntent devolviendo la intención original de la Actividad dada ciertas banderas / filtros de intenciones.

    Si ese es el caso para usted, necesitará consultar Activity :: onNewIntent . Substituya ese método, y la intención pasada a esa función debe ser la nueva intención con extras apropiados, etc.

    El crédito va a esta pregunta de SO que me ayudó a resolver mi problema: ¿Por qué es Intent.getAction () nula de mi actividad de búsqueda?

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.