2010-07-12 10 views
28

AccountAuthenticator.java:Wie bekomme ich den Kontext aus der Absicht?

Intent intent = new Intent(context, AccountActivity.class); 

AccountActivity.java:
In onCreate (Bundle aBundle) möchte ich sagen:

getIntent().getContext(); 

Aber getContext() existiert nicht.

Wie bekomme ich den Kontext von der Absicht?
Da es im Intent-Konstruktor übergeben wurde, erwartete ich, dass es bei der Ankunft in der AccountActivity verfügbar ist.

+0

Warum brauchen Sie den Kontext aus der Absicht? – Maragues

+0

Ich brauche den Dienst (d. H. Kontext), der den Intent erstellt hat, um eine AsyncTask erstellen zu können, die im Konstruktor verwendet wird. Wenn ich das nicht mache, bekomme ich: "java.lang.SecurityException: client uid 10027 ist anders als die UID des Authentifizierers", da die AsyncTask den Accountmanager am = Accountmanager.get (Kontext) ausführt. – user77115

+0

Für mich habe ich versucht, TDD zu verwenden und zu überprüfen, ob der richtige Kontext aus dem getesteten Code gesetzt wurde. – PseudoNoise

Antwort

32

Wie bekomme ich den Kontext von der Absicht?

Sie nicht.

Da es in der Absicht Konstruktor übergeben wird, ich es erwartet hatte seine verfügbar bei der Ankunft im AccountActivity.

Die Context wird nur verwendet, um die Intent Routinginformationen zu erstellen. Da ein Intent (und häufig auch) außerhalb von Context leben kann, kann ein Intent nicht auf einem Context festhalten.

muss ich den Service (das heißt Context), dass die Absicht erstellt, um der Lage zu sein, ein AsyncTask nehmen es in der Konstruktor zu erstellen.

Sie können dies nicht tun, sorry.

Wenn ich nicht, dass ich bekommen: "java.lang.SecurityException: Anrufer uid 10027 ist anders als der Authentifikator der uid", da die AsyncTask ist Accountmanager am = tun Accountmanager.get (Kontext).

Dies hat nichts mit AsyncTask zu tun. Das hat mit Prozessen zu tun, nicht mit Threads.

+0

Perfekte Erklärung. Kudos :) CommonsWare –

Verwandte Themen