2014-08-27 99 views
0

我想從聯繫人列表中獲取聯繫人,但出於某種原因我無法獲取聯繫人列表。我已經聽取了一些指導。這是我的代碼:無法獲取聯繫人使用Intent.ACTION_PICK

public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.menu_ice_add: 
      Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 
      startActivityForResult(intent, RequestCodes.PICK_CONTACT); 
      return true;   
     default: 
     return super.onOptionsItemSelected(item); 
    } 
} 

當我調試,它總是轉到默認情況下,它返回super.onOptionItemSelected(項目);

@SuppressLint("InlinedApi") 
@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 

    // se comprueba de qué activity está volviendo 
    switch(requestCode) {  
    case (RequestCodes.PICK_CONTACT) : 
      if (resultCode == Activity.RESULT_OK) { 
       Uri contactData = data.getData(); 

       ContactUtils.addContactInfo(getActivity(), contactData, adapter); 

      }    
      break; 
    } 

    super.onActivityResult(requestCode, resultCode, data); 
} 

它永遠不會開始onActivityResult。

有人可以給我一個提示嗎?我會很感激。謝謝。

編輯1

我必須說,這個代碼適用於Android 2.3,但它不奇巧工作(這些都是我的設備)

EDIT 2

我在menifest中添加了android.permission.READ_CONTACTS

編輯3(已解決)

問題不是意圖。我正在使用Fragments,並且正在調用ActivityResult,但我不知道我必須對附加了我的Fragment的活動上的「super.onActivityResult(arg0,arg1,arg2)」執行操作。

我不會刪除該問題,因爲這可能會有幫助。

反正大家都是。

+0

你有沒有在menifest中添加權限android.permission.READ_CONTACTS? – 2014-08-27 11:06:08

+0

是的,我已經添加相應的權限 – Carl 2014-08-27 11:07:52

+1

如果它總是默認情況下,那麼在充氣菜單或選擇正確的ID時可能會出現問題。檢查一次 – Gautam 2014-08-27 11:18:16

回答

0

當我調試時,它總是進入默認情況,它返回super.onOptionItemSelected(item);

然後你有錯誤的項目ID在你case聲明,或者你R類是與你的資源同步(清理項目,如項目>在Eclipse清潔,清理這個問題)。

它永遠不會開始onActivityResult。

那是因爲你沒有打電話startActivityForResult(),由於與你的菜單資源和onOptionsItemSelected()執行問題,如上所述。

另請注意,對於代碼中顯示的用途,您不需要READ_CONTACTS,但您可能需要它以用於ContactUtils.addContactInfo()中的任何內容。

FWIW,this directory包含五個示例項目,所有這些項目都成功使用ACTION_PICKContactsContracts.Contacts.CONTENT_URI。項目之間的差異歸結爲它們如何處理配置更改(例如,屏幕旋轉)。

相關問題