¿Cómo puedo pasar correctamente extras exclusivos a un bash pendiente?

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

Si configuro varias alarmas, se apagarán, sin embargo, los extras permanecen iguales.

Ya leí estas preguntas:

  • problema de notificación de intención pendiente de Android
  • Android guarda en el caché mis intenciones Extras, ¿cómo declarar un bash pendiente que mantiene nuevos extras?

y lo he intentado:

  • asignando una ID única a cada bash pendiente y
  • usando todas las banderas de intención pendientes,

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

Aquí hay 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 problemas diferentes aquí:

1) Si ya ha creado su PendingIntent antes y “coincide” con un PendingIntent existente, entonces debe especificar el indicador PendingIntent.FLAG_UPDATE_CURRENT o no pasará los extras. Una “coincidencia” se basa en los criterios que usa Intent.filterEquals (), así que definitivamente lea los documentos allí y asegúrese de comprender los datos, las acciones, el tipo, etc.

2) He leído que si NO establece una acción en su bash, entonces no propagará los extras, así que quizás intente intent.setAction (“com.blah.Action”).

Me encontré con un problema similar. El uso de PendingIntent.FLAG_ONE_SHOT puede resolver el problema, ya que significa que PendingActivity no se volverá a utilizar.

Esto podría deberse a que Activity :: getIntent devuelve la intención original de la actividad dados determinados indicadores / indicadores de intención.

Si ese es tu caso, deberás consultar Activity :: onNewIntent . Anule ese método, y el bash pasado a esa función debe ser el nuevo bash con extras adecuados, etc.

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