2017-06-11 7 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

関連する問題