2017-06-11 46 views
0

我試圖從聯繫人選擇器獲取姓名(姓氏),姓氏(姓氏),電話號碼和電子郵件地址。我使用了一些在stackoverflow上的代碼,但它沒有工作。需要從聯繫人選擇器中獲取姓名,電話號碼和電子郵件

我可以拿手機號碼,但是當我嘗試獲取姓氏或名字時,它不起作用!

(而且可能不顯示的聯繫人列表中,但只是名稱上的數字電話?)

希望你能幫助我。

這是代碼:

Uri uri = Uri.parse("content://contacts"); 
    Intent intent = new Intent(Intent.ACTION_PICK, uri); 
    intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 
    startActivityForResult(intent, REQUEST_CODE); 

@Override 
protected void onActivityResult(int requestCode, int resultCode, 
           Intent intent) { 
    if (requestCode == REQUEST_CODE) { 
     if (resultCode == RESULT_OK) { 
      Uri uri = intent.getData(); 
      String[] projection = {ContactsContract.CommonDataKinds.Phone.NUMBER, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, 
        ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME}; 


      Cursor cursor = getContentResolver().query(uri, projection, null, null, null); 
      cursor.moveToFirst(); 

      int numberColumnIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER); 
      String number = cursor.getString(numberColumnIndex); 

      int congomeCursorIndex = cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME); 
      String cognome = cursor.getString(congomeCursorIndex); 



     } 
    } 
} 

回答

0

這一行:

intent.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE); 

你實際上請求電話選擇器不是接觸選取器 。在onActivityResult

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

然後::

嘗試此。

Uri contactUri = intent.getData(); 
long contactId = ContentUris.parseId(contactUri); 
String projection = String[] { Data.MIMETYPE, Data.DATA1, Data.DATA2, Data.DATA3 }; 
String selection = Data.CONTACT_ID + " = " + contactId + " AND " + Data.MIMETYPE + 
     " IN ('" + StructuredName.CONTENT_ITEM_TYPE + "', '" + Email.CONTENT_ITEM_TYPE + "' , '" + Phone.CONTENT_ITEM_TYPE +"')"; 
Cursor cursor = getContentResolver().query(Data.CONTENT_URI, projection, selection, null, null); 

while (cursor != null && cursor.moveToNext()) { 
    String mime = cursor.getString(0); 
    String info = cursor.getString(1); 
    if (mime.equals(CommonDataKinds.Email.CONTENT_ITEM_TYPE)) { 
    Log.d(TAG, "email = " + info; 
    } 
    if (mime.equals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE)) { 
    Log.d(TAG, "phone = " + info; 
    } 
    if (mime.equals(CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE)) { 
    Log.d(TAG, "given name = " + cursor.getString(2) + ", family name = " + cursor.getString(3); 
    } 
} 
if (cursor != null) { 
    cursor.close(); 
} 
+0

上的應用程序崩潰'光標光標= getContentResolver()的查詢(ContactsContract.Data.CONTENT_URI,投影,選擇,空, null);' – Sevengek0

+0

什麼是崩潰?發佈你的堆棧跟蹤 – marmor

相關問題