2010-11-07 6 views
67
senden

Ich möchte im Grunde eine Absicht machen und es an einen Dienst von onReceive() meines BroadcastReceivers übergeben.Android - Kontext von einem Broadcast-Empfänger erhalten onReceive() an

Bis jetzt habe ich immer View.getContext() verwendet, aber hier bin ich fest. Wie genau kann ich den Kontext bekommen, damit ich public Intent (Context packageContext, Class<?> cls) verwenden kann?

Antwort

235

public abstract void onReceive (Context context, Intent intent)

OnReceive gibt Ihnen den Kontext. Was willst du noch?

+59

wow ... wie entging, was richtig war .. Vielen Dank Falmarri. – madu

+37

classic facepalm situation: D – egore911

+12

Darf noch 5 Jahre nach der Veröffentlichung veröffentlicht werden, aber immer noch absolut relevant !!! Ich habe den gleichen Fehler gemacht! Vielen Dank –

1

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

Ihre Problembeschreibung besagt also, dass Sie den Dienst mit diesem Kontext bei der Erstellung Ihrer Absicht starten und dann startService mit diesem Kontextobjekt aufrufen möchten. Das kann nicht gemacht werden.

Lesen Sie dies, was im BroadcastReceiver Kontext getan werden kann und nicht getan werden kann.

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

+0

was du gesagt hast ist nicht wahr. Du kannst einen Dienst von BroadcastReceivers starten, aber kann nicht an sie binden. –