Tengo una aplicación, que establece una alarma usando AlarmManager, que inicia otra actividad cuando se apaga. El AlarmManager toma un PendingIntent y genera una clase BroadcastReceiver cuando llega la hora especificada. Me pregunto si hay alguna forma de que pueda pasar argumentos a este BroadcastReceiver a través del objeto Intent que va a PendingIntent.Transmisión de argumentos a un BroadcastReceiver a través de un Intento en Android
Básicamente lo que me gustaría hacer es algo como esto:
Intent my_intent = new Intent(this, BroadcastService.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, my_intent, 0);
my_intent.putExtra("arg1", arg1);
AlarmManager alarmManager = (AlarmManager) getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (1000), pendingIntent);
y me gustaría ser capaz de recuperar arg1 en el método (Contexto, Intención) OnReceive del BroadcastReceiver. Pensé que la variable local my_intent sería el segundo parámetro transferido a onReceive por PendingIntent, pero aparentemente eso no es del todo correcto. ¿Es posible pasar parámetros entre una Actividad y un BroadcastReceiver de esta manera (usando Intent.putExtra()) o debería usar un ContentProvider en su lugar?
Gracias!
Iva
Ah sí, dije mal; Estoy usando la alarma como una avenida para invocar una actividad en particular en un momento determinado, y cuando suena la alarma, creo una notificación que luego el usuario puede desplegar siempre que sea conveniente y solo luego invocar la actividad, para que yo no use No molesten lo que sea que estén haciendo. ¡Gracias por tu respuesta! – ivcheto
Hmm, agregar PendingIntent.FLAG_UPDATE_CURRENT como indicador al obtener PendingIntent no parece cambiar nada; Todavía no obtengo los extras del intento en mi Actividad original para la intención pasada a la recepción de 0Recibir – ivcheto
¿Está llamando a putExtra() antes de crear el PendingIntent? No sé cuándo PendingIntent serializa el Intento, pero si lo hace de inmediato, poner llamadas a Extra() después de crear el PendingIntent no tendría ningún efecto. – CommonsWare