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)?

Antworten:


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

onReceivegibt Ihnen den Kontext. Was willst du noch?


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


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);
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.