¿Cómo puedo pasar correctamente extras exclusivos de una intención pendiente?
-
30-09-2019 - |
Pregunta
Estoy teniendo un problema con alarmManager
y la pendiente de intención con extras que ir junto con él.
Si fijo varias alarmas, se apagarán, sin embargo los extras permanecen igual.
Ya he leído en estas preguntas:
- androide espera de la notificación problema intención
- Android mantiene el almacenamiento en caché mis intenciones extras, la forma de declarar una intención pendiente que mantiene frescos los extras?
y he probado:
- asignar un identificador único a cada intención y pendientes
- utilizando todas las banderas intención pendientes,
todo fue en vano. No tengo ni idea de por qué no va a 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);
Solución
posiblemente dos cuestiones diferentes aquí:
1) Si ya ha creado su PendingIntent antes y "coincidencias" un PendingIntent existente, debe especificar la bandera PendingIntent.FLAG_UPDATE_CURRENT o no se pasa a los extras. Un "juego" se basa en los criterios que Intent.filterEquals () usos, por lo que definitivamente leen los documentos allí y asegúrese de entender los datos, la acción, el tipo, etc.
2) He leído que si no se establece una acción en su intención, entonces no va a propagar los extras, así que quizás tratar intent.setAction ( "com.blah.Action").
Otros consejos
Me he encontrado con un problema similar. Con PendingIntent.FLAG_ONE_SHOT puede resolver el problema, porque significa que el PendingActivity no se reutilizará.
Esto podría ser debido a la actividad :: getIntent devolver ciertas banderas dadas la intención original de la actividad Intención / filtros.
Si ese es el caso para usted, usted tendrá que mirar a Actividad :: onNewIntent . Invalidar ese método, y la intención pasado a esa función debe ser el nuevo intento con los suplementos adecuados, etc.
El crédito va a esta pregunta de manera que me ayudó a resolver mi problema: ¿Por qué es Intent.getAction () nula de mi actividad de búsqueda?