Нужно получить имя, фамилию, номер телефона и адрес электронной почты от сборщика контактов
Я пытаюсь получить имя (имя), фамилию (фамилию), номер телефона и адрес электронной почты человека от сборщика контактов. Я использовал некоторый код, взятый на 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();
}