2011-10-05 47 views

回答

0

從這裏:How to call Android contacts list?

我不是100%肯定你的問題應該問,但下面的代碼片段應該幫助你呼叫的聯繫人列表功能,選擇一個聯繫人,然後返回到[您]應用程序與聯繫人的名字'。

這個過程有三個步驟。

1)權限

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

<uses-permission android:name="android.permission.READ_CONTACTS"/> 

2)調用聯繫人選擇器

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

Intent intent = new Intent(Intent.ACTION_PICK, People.CONTENT_URI); 

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

startActivityForResult(intent, PICK_CONTACT); 

3)監聽結果

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

您可以通過調用getData()上的數據 Intent參數來獲取所選聯繫人的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 = managedQuery(contactData, null, null, null, null); 
     if (c.moveToFirst()) { 
      String name = c.getString(c.getColumnIndexOrThrow(People.NAME)); 
      // TODO Whatever you want to do with the selected contact name. 
     } 
     } 
     break; 
    } 
} 
0

在你的清單,你將需要添加權限:

<uses-permission android:name="android.permission.READ_CONTACTS" /> 

接下來,你的活動中,你會使用類似:

ContentResolver cr = getContentResolver(); 
     Cursor cur = cr.query(ContactsContract.Contacts.CONTENT_URI, 
       null, null, null, null); 
     if (cur.getCount() > 0) { 
     while (cur.moveToNext()) { 
      String id = cur.getString(cur.getColumnIndex(ContactsContract.Contacts._ID)); 
      String name = cur.getString(
         cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME)); 

      } 
    } 

此查詢聯繫人,並得到ID和名稱。

0

你可能想發送ACTION_EDIT意圖聯繫人

Uri uri = Uri.parse(iduri); 
i.setData(uri); 
Intent i = new Intent(Intent.ACTION_EDIT); 
i.setData(Uri.parse(ContactsContract.Contacts.CONTENT_LOOKUP_URI + "/" + id)); 
startActivityForResult(i, some_int_EDIT_CONTACT); 

或更好

Uri contactUri = ContentUris.withAppendedId(ContactsContract.Contacts.CONTENT_URI, read_id); 
i.setData(contactUri); 
startActivityForResult(i, some_int_EDIT_CONTACT); 

假設你有接觸式ID

相關問題