2011-12-21 75 views
15

我希望我的應用程序通過Android上的標準Contacts界面提示用戶創建新聯繫人。然後,我希望能夠從新創建的聯繫人中讀取信息。添加聯繫人intent不會返回數據onActivityResult在ICS下

我的代碼基於this網站的「添加新聯繫人」。

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

然後

@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(); 
} 

此代碼運行在Android 2.2和2.3細。它啓動聯繫人應用程序,並讓用戶輸入名稱和電子郵件地址等內容,當它們完成並點擊「確定」或「保存」或「不管」時,它會返回到我的應用程序,我可以讀取它們輸入的內容。在Android 4.0(ICS)上,當用戶創建聯繫人時,它不會返回到我的應用程序。當我退出聯繫人視圖(通過後退按鈕)時,它不包含任何聯繫人信息。

我應該用什麼意圖在ICS上獲得相同的行爲?

+0

我有同樣的問題:( – 2012-03-20 18:27:26

+0

http://stackoverflow.com/questions/9551821/android-4-0-3-and-finish-activity 我有類似的問題。 – user1247617 2012-03-25 03:40:10

+0

我問題是,如果我打開另一個活動,並返回到onActivityResult()上的父活動,但當我嘗試捕獲圖像使用intent onActivityResult()之前調用捕獲或取消相機事件之前調用它的工作原理和這個問題發生在Android 4.03 htc me) – 2012-09-25 09:51:21

回答

15

如果是Android 4.0.3及以上,您需要提供新的額外的意圖:

公共靜態最後絃樂INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED = 「finishActivityOnSaveCompleted」;

intent.putExtra(INTENT_KEY_FINISH_ACTIVITY_ON_SAVE_COMPLETED,true);

我沒有Android 4.0到4.0.2的解決方案。

有人嗎?

+1

這真是太棒了!非常感謝你,我剛剛在Galaxy Nexus上運行4.0.4,它的功能就像一個魅力!愚蠢的Verizon Galaxy Nexus仍然停留在4.0.2,所以這個修復仍然沒有'但希望Verizon會盡快更新它,再次感謝! – 2012-04-25 21:01:12

+1

爲我節省了很多頭痛,謝謝!事實證明這是有記錄的,儘管找到Android文檔的位置當然是它自己的頭痛。 http://developer.android.com/training/contacts-provider/modify-data.html在「添加導航標誌」 – Groxx 2013-04-06 04:18:14

+0

這不適用於Android 4.4.2。請分享,如果你有任何解決方案或知道改變了什麼。 Thx – Sandra 2014-09-16 14:42:51

相關問題