2011-12-21 18 views
15

altında bulunan Açıklık Hatası verilerini döndürmüyor Uygulamamın, Android'de standart Kişiler arabirimi aracılığıyla yeni bir kişi oluşturmasını istemesini istiyorum. Sonra yeni oluşturulan kişiden bilgileri okuyabilmek istiyorum.İrtibat amacı, ICS

Kodum, this sitesinden "Yeni Kişi Ekleme" ye dayanmaktadır.

Intent intent = new Intent(Intent.ACTION_INSERT); 
intent.setType(Contacts.CONTENT_TYPE); 
intent.putExtra(ContactsContract.Intents.Insert.PHONE, number); 
startActivityForResult(intent, PICK_CONTACT); 

ve sonra

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    Intent intent = new Intent(this, Foo.class); 
    Uri uri = data.getData(); //I get nullpointer here on ICS 
    intent.putExtra("contact", ContactAccessor.getInstance().loadContact(this, uri)); 
    startActivity(intent); 
    finish(); 
} 

Bu kod Android 2.2 ve 2.3 iyi çalışır. Kişiler uygulamasını başlatır ve kullanıcının isim ve e-posta adresi gibi şeyler girmesine izin verir ve bittiğinde "tamam" veya "kaydet" veya "her ne olursa olsun" uygulamasına geri döner ve girdikleri şeyleri okuyabilirim. Android 4.0'da (ICS) ancak kullanıcı, kişiyi oluşturmayı bitirdiğinde uygulamama geri dönmez. Ve kontak görünümden çıktığımda (geri butonu ile) iletişim bilgileri ile herhangi bir niyet içermez.

ICS'de aynı davranışı almak için ne amaçla kullanmalıyım?

+0

Ben aynı sorunu :( –

+0

http://stackoverflow.com/questions/9551821/android-4-0-3-and-finish-activity Ben benzer bir sorun yaşıyorum yaşıyorum. – user1247617

+0

benim Başka bir aktivite açıp onActivityResult() üzerindeki ana etkinliğe geri dönersem ancak kamera olayını yakalama veya iptal etmeden önce aranan onActivityResult() kullanarak görüntü yakalamaya çalıştığımda sorun çıkar ve bu sorun android 4.03'te gerçekleşir htc me) –

cevap

15
Android 4.0.3 için

ve yukarı, yeni bir niyet ekstra sağlamak gerekir:

public static final Dize INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = "finishActivityOnSaveCompleted";

intent.putExtra (INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED, true);

Android 4.0'dan 4.0.2'ye bir çözümüm yok.

Herkes?

+1

Bu harika! Çok teşekkür ederim. Bunu sadece 4.0.4 çalıştıran bir Galaxy Nexus üzerinde denedim ve bir cazibe gibi çalıştı! Aptal Verizon Galaxy Nexus hala 4.0.2'de kaldı; Çalış, ama umarım Verizon yakında güncellenir. Tekrar teşekkürler! –

+1

Beni çok fazla baş ağrısından kurtardı, teşekkürler! Android belgelerine bakmanın yolunu bulmak elbette kendi baş ağrısını oluştursa da, bu durum belgelenmiştir. http://developer.android.com/training/contacts-provider/modify-data.html "Gezinme işaretini ekle" – Groxx

+0

Bu, Android 4.4.2'de çalışmaz. Herhangi bir çözümünüz varsa veya neyin değiştiğini biliyorsanız lütfen paylaşın. Thx – Sandra