Tengo una aplicación de Android que necesita ser activada esporádicamente durante el día.¿Cómo paso los datos de un BroadcastReceiver a una actividad que se inicia?
Para hacer esto, estoy usando el AlarmManager para configurar un PendingIntent y hacer que active un BroadcastReceiver. Este BroadcastReceiver luego inicia una Actividad para llevar la IU al primer plano.
Todo lo anterior parece funcionar, ya que la actividad se inicia correctamente; pero me gustaría que el BroadcastReceiver notifique a la Actividad que fue iniciada por la alarma (en lugar de ser iniciada por el usuario). Para hacer esto que estoy tratando, a partir del método OnReceive() de la BroadcastReceiver para establecer una variable en el paquete de extras de la intención, por lo tanto:
Intent i = new Intent(context, MyActivity.class);
i.putExtra(wakeupKey, true);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
En el onResume() de mi actividad, que luego buscar la existencia de esta variable booleana:
protected void onResume() {
super.onResume();
String wakeupKey = "blah";
if (getIntent()!=null && getIntent().getExtras()!=null)
Log.d("app", "onResume at " + System.currentTimeMillis() + ":" + getIntent().getExtras().getBoolean(wakeupKey));
else
Log.d("app", "onResume at " + System.currentTimeMillis() + ": null");
}
la llamada getIntent() getExtras() en onResume() siempre devuelve null - yo no parecen ser capaces de pasar a través de cualquier accesorio para nada en esto. haz.
Si utilizo el mismo método para vincular extras al PendingIntent que desencadena el BroadcastReceiver, sin embargo, los extras vienen bien.
¿Alguien puede decirme qué tiene de diferente pasar un paquete de un BroadcastReceiver a una actividad, en lugar de pasar el paquete de una actividad a un BroadcastReceiver? Me temo que puedo estar haciendo algo muy, muy obvio mal aquí ...
curioso y más curioso ... que acaba de comenzar a trabajar (en el emulador), exactamente como yo esperaría . Trabajó repetidamente por un tiempo. Apagué el emulador, reinicié (sin ningún cambio de código ni recompilación) y volví al comportamiento anterior (la actividad se inicia pero no se transfiere ningún paquete). Aún puedo ver los registros de ambas ejecuciones; en el primero, los paquetes están llegando, en el último caso no. –