2016-01-25 82 views
-2

我想在Android.I中顯示設備聯繫人活動不需要聯繫人列表以顯示在我的自定義視圖中。 繼代碼後,無法處理活動。通過意圖啓動聯繫人活動

Intent i = new Intent(Intent.ACTION_PICK); 
i.setType(ContactsContract.Contacts.CONTENT_ITEM_TYPE); 
startActivity(i); 
+0

您是否將類添加到清單文件? – Stanojkovic

+0

我想調用移動聯繫人活動而非自定義活動(聯繫人活動是系統活動).so如何找到一類聯繫人活動? – google

回答

0

您應該在AndroidManifest中添加READ_CONTACT權限。

Intent intent = new Intent(Intent.ACTION_PICK); 
intent.setType(ContactsContract.Contacts.CONTENT_TYPE); 
startActivityForResult(intent, 10011); 
+0

我應該在onActivityResult中做什麼? – google

+0

就像@Stanojkovic如果你想使用你選擇的聯繫信息。 –

1

1)權限

添加到閱讀聯繫人數據到您的應用程序清單權限。

2)調用聯繫人選擇器

中的活動,創建一個要求系統找到能夠執行從聯繫人URI中的項目一挑動作的活動的意圖。

Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI); 

呼叫startActivityForResult,傳遞該意向(和請求碼整數,PICK_CONTACT在這個例子中)。這會導致Android啓動一個活動,該活動已在People.CONTENT_URI上註冊爲支持ACTION_PICK,並在選擇完成(或取消)後返回到此活動。

startActivityForResult(intent, PICK_CONTACT); 

3)監聽結果

而且在你的活動,覆蓋onActivityResult方法以偵聽從返回的「選擇聯繫人」你在步驟2中啓動的活動您應該檢查返回的請求代碼與您期望的值相匹配,並且結果代碼爲RESULT_OK。

您可以通過調用數據Intent參數的getData()來獲取所選聯繫人的URI。要獲取所選聯繫人的名稱,您需要使用該URI來創建新查詢並從返回的光標中提取名稱。

@Override 
public void onActivityResult(int reqCode, int resultCode, Intent data) { 
    super.onActivityResult(reqCode, resultCode, data); 
switch (reqCode) { 
case (PICK_CONTACT) : 
if (resultCode == Activity.RESULT_OK) { 
Uri contactData = data.getData(); 
Cursor c = getContentResolver().query(contactData, null, null, null, null); 
if (c.moveToFirst()) { 
String name = c.getString(c.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 
// TODO Whatever you want to do with the selected contact name. 
    } 
} 
break; 
    } 
}