Ich habe eine Anwendung, die einen Alarm mit AlarmManager setzt, die eine andere Aktivität startet, wenn es ausgelöst wird. Der AlarmManager verwendet einen PendingIntent und erzeugt eine BroadcastReceiver-Klasse zum angegebenen Zeitpunkt. Ich frage mich, ob es irgendeinen Weg gibt, dass ich Argumente zu diesem BroadcastReceiver durch das Intent-Objekt übergeben kann, das in PendingIntent geht?Übergabe von Argumenten an einen BroadcastReceiver durch einen Intent in Android
Im Grunde, was ich möchte ist, etwas zu tun wie folgt aus:
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);
und ich möchte in der Lage sein arg1 in der OnReceive (Context, Intent) -Methode des BroadcastReceiver abzurufen. Ich dachte, dass die lokale Variable my_intent der zweite Parameter wäre, der von PendingIntent an onReceive übergeben wird, aber das ist anscheinend nicht ganz richtig. Ist es möglich, Parameter zwischen einer Aktivität und einem BroadcastReceiver auf diese Weise zu übergeben (Intent.putExtra()) oder stattdessen einen ContentProvider zu verwenden?
Danke!
Iva
Ah ja, ich habe falsch gesagt; Ich verwende den Alarm als eine Möglichkeit, um eine bestimmte Aktivität zu einem bestimmten Zeitpunkt aufzurufen, und wenn der Alarm ausgelöst wird, erstelle ich eine Benachrichtigung, die der Benutzer bei Bedarf ablegen kann und erst dann die Aktivität aufruft, damit ich mich nicht anmelde Störe nicht, was immer sie gerade tun. Danke für deine Antwort! – ivcheto
Hmm, Hinzufügen der PendingIntent.FLAG_UPDATE_CURRENT als Flag beim Abrufen der PendingIntent scheint nichts zu ändern; Ich bekomme immer noch nicht die Extras von der Absicht in meiner ursprünglichen Aktivität zu der Absicht, die an die onReceive – ivcheto
übergeben. Rufen Sie putExtra() vor dem Erstellen der PendingIntent? Ich weiß nicht, wann PendingIntent den Intent serialisiert, aber wenn es sofort ausgeführt wird, hätten PutExtra() - Aufrufe nach dem Erstellen des PendingIntents keine Wirkung. – CommonsWare