Android - Abrufen des Kontexts von einem Broadcast-Empfänger onReceive () zum Senden an

82

Grundsätzlich möchte ich eine Absicht treffen und sie von onReceive () meines BroadcastReceivers an einen Dienst weitergeben.

Bisher habe ich immer View.getContext () verwendet, aber hier stecke ich fest. Wie genau kann ich den Kontext abrufen, damit ich ihn verwenden kann public Intent (Context packageContext, Class<?> cls)?

Madu
quelle

Antworten:

297
public abstract void onReceive(Context context, Intent intent)

onReceivegibt Ihnen den Kontext. Was willst du noch?

Falmarri
quelle
7
Oh im Ernst, ich habe es nicht gesehen, bis ich das sehe.
Blasanka
2

Nun, die oben erwähnte Antwort ist nicht von Nutzen. Sie können den Kontext verwenden, solange Sie sich in onReceive befinden. Sobald Ihr Code von onReceive zurückgegeben wurde, ist der Kontext nicht mehr vorhanden.

Ihre Problemstellung besagt also, dass Sie den Dienst unter Verwendung dieses Kontexts bei Ihrer Absichtserstellung starten und dann startService mit diesem Kontextobjekt aufrufen möchten. Das geht nicht.

Lesen Sie hier, was im BroadcastReceiver-Kontext möglich und nicht möglich ist.

http://developer.android.com/reference/android/content/BroadcastReceiver.html

Bibhay Ranjan
quelle
Was du gesagt hast, ist nicht wahr. Sie können einen Dienst von BroadcastReceivers aus starten, aber nicht an diese binden.
Bardya Momeni
0

Im BroadcastReceiver der

onReceive(Context context, Intent intent)

Methode liefert Kontext

so

um die Aktivität zu starten

context.startActivity(intent);

und um die Dienstnutzung zu starten

context.startService(intent);
L.sagar
quelle