Нужно получить имя, фамилию, номер телефона и адрес электронной почты от сборщика контактов

Я пытаюсь получить имя (имя), фамилию (фамилию), номер телефона и адрес электронной почты человека от сборщика контактов. Я использовал некоторый код, взятый на stackru, но он не работает.

Я могу взять номер телефона, но когда я пытаюсь получить фамилию или имя, это не работает!

(А можно не указывать номер телефона в списке контактов, а только имя?)

Надеюсь, ты сможешь мне помочь.

Вот код:

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);



        }
    }
}

1 ответ

С этой строкой:

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

Вы на самом деле просите сборщик телефонов, а не сборщик контактов.

Попробуй это:

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

Затем в onActivityResult:

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();
}
Другие вопросы по тегам