Wie übergebe ich Daten von einem BroadcastReceiver an eine Aktivität, die gestartet wird?

Ich habe eine Android-Anwendung, die den ganzen Tag über sporadisch geweckt werden muss.

Zu diesem Zweck verwende ich den AlarmManager, um ein PendingIntent einzurichten und damit einen BroadcastReceiver auszulösen. Dieser BroadcastReceiver startet dann eine Aktivität, um die Benutzeroberfläche in den Vordergrund zu rücken.

Alles oben Genannte scheint insofern zu funktionieren, als die Aktivität korrekt gestartet wird. Ich möchte jedoch, dass der BroadcastReceiver der Aktivität mitteilt, dass der Alarm ausgelöst wurde (anstatt vom Benutzer gestartet zu werden). Dazu versuche ich, von der onReceive () -Methode des BroadcastReceiver aus eine Variable im Extras-Bundle des Intents zu setzen, also:

    Intent i = new Intent(context, MyActivity.class);
    i.putExtra(wakeupKey, true);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    context.startActivity(i);

n der onResume () -Methode meiner Activity suche ich dann nach der Existenz dieser booleschen Variablen:

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");
}

Der Aufruf von getIntent (). GetExtras () in onResume () gibt immer null zurück. Ich bin anscheinend nicht in der Lage, irgendwelche Extras in diesem Bundle durchzuleiten.

Wenn ich die gleiche Methode verwende, um Extras an das PendingIntent zu binden, das den BroadcastReceiver auslöst, funktionieren die Extras einwandfrei.

Kann mir jemand sagen, was anders ist, wenn ein Bundle von einem BroadcastReceiver an eine Aktivität übergeben wird, als wenn das Bundle von einer Aktivität an einen BroadcastReceiver übergeben wird? Ich fürchte, ich mache hier vielleicht etwas sehr, sehr offensichtliches falsch ...

Antworten auf die Frage(5)

Ihre Antwort auf die Frage