2010-07-12 18 views
28

AccountAuthenticator.java:İçeriği Niyet'ten Nasıl Alabilirim?

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

AccountActivity.java:

getIntent().getContext(); 

Ama getContext() yok: onCreate (Bundle aBundle) olarak
söylemek istediğim.

İçeriği Niyet'ten Nasıl Alabilirim?
Intent yapıcısından geçtiğinden, oraya varmanın Hesap Aktarıcısında olmasını beklerdim.

+0

Neden Bağlam Niçin İhtiyacınız Var? – Maragues

+0

Yapıcıya alan bir AsyncTask oluşturabilmek için, Niyeti yaratan Hizmete (yani, Bağlam) ihtiyacım var. Bunu yapmazsam, "java.lang.SecurityException: 10027 arayan kimliği, kimlik doğrulayıcının kullanıcı kimliğinden farklı", çünkü AsyncTask, Accountmanager am = Accountmanager.get (context) yapıyor. – user77115

+0

Benim için, TDD'yi kullanmaya çalışıyordum ve doğru bağlamın test edilen koddan ayarlandığını doğrulamaya çalışıyordum. – PseudoNoise

cevap

32

İçeriği Niyetinden Nasıl Alabilirim?

Yapmıyorsunuz. o Niyet yapıcı içinde geçirilen yana

, bunu bekliyordum AccountActivity varışta kullanılabilir olması için.

Context

sadece Intent yönlendirme bilgileri oluşturmanıza yardımcı olmak için kullanılır. Intent herhangi bir Context dışında yaşayabildiğinden (ve sık sık yapılıyorsa), Intent bir Context'a sahip olamaz.

Bir AsyncTask yapıcı bunu alarak oluşturmak edebilmek amacıyla Hedefi oluşturdu Servis (yani bağlam) gerekir.

Bunu yapamazsınız, üzgünüm.

ben almak yapmazsanız

: : AsyncTask AccountManager am = Accountmanager.get yapıyor beri, "java.lang.SecurityException arayan uid 10027 kimlik doğrulayıcısının uid farklıdır" (bağlama).

Bu, AsyncTask ile ilgisi yoktur. Bu süreçlerle değil, süreçlerle ilgilidir.

+0

Kusursuz bir açıklama. Kudos :) CommonsWare –