23

Tengo un problema con alarmManager y el intento pendiente con extras que irán junto con él.¿Cómo puedo pasar correctamente extras exclusivos a un intento pendiente?

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

ya he leído en estas preguntas:

y he intentado:

  • asignar un identificador único a cada intención pendiente y
  • usando todas las banderas de intención pendientes,

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

Aquí es 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); 

Respuesta

66

posiblemente dos cuestiones 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, la acción, el tipo, etc.

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

+0

En mi intención pendiente, intento configurar PendingIntent.FLAG_UPDATE_CURRENT, pero ahora cuando se llama a la intención, aparece un error como "java.lang.IllegalArgumentException: No se puede usar FLAG_RECEIVER_BOOT_UPGRADE aquí", no tengo idea de dónde arrancó este BOOT viene la bandera, todo lo que agregué wa fue FLAG_UPDATE_CURRENT. ¿Tuviste un problema similar antes? (Estoy en Huawei Ideos, 2.2) –

+3

Definir una acción de hecho resolvió mi problema, ¡gracias! – shawkinaw

+0

setaction fue bueno para mí .. mismo problema – catalin87

2

Esto podría ser debido a la actividad :: getIntent devolver la intención original de la actividad dada ciertas banderas/filtros intención.

Si ese es su caso, tendrá que mirar Activity::onNewIntent. Invalidar ese método, y la intención pasado a esa función debe ser el nuevo intento con los suplementos adecuados, etc.

crédito va a esta cuestión de forma que me ayudó a resolver mi problema: Why is my searchable activity's Intent.getAction() null?

11

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

Cuestiones relacionadas