Я запустил операцию выбора контактов
Intent intent = new Intent(Intent.ACTION_PICK, ContactsContract.Contacts.CONTENT_URI);
startActivityForResult(intent, enumRequestCode.PICK_CONTACT.ordinal());
Затем в onActivityResult у меня есть этот код, чтобы получить номер телефона (и display_name, но это не очень хорошо, достаточно ... Мне нужно имя и фамилию, чтобыбыть в состоянии поддерживать ввод различных стран):
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(enumRequestCode.PICK_CONTACT.ordinal() == requestCode){
if (resultCode == Activity.RESULT_OK) {
Cursor cursor = managedQuery(data.getData(), null, null, null, null);
while (cursor.moveToNext())
{
String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
String name = cursor.getString(cursor.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
String phoneNumber = "";
int hasPhone = cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));
String firstName = "";
String surName = "";
if (hasPhone >= 1){
Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId,null, null);
phones.moveToNext();
phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
phones.close();
}
Я пробовал с:
// String firstName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
// String surName = cursor.getString(cursor.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
Но это не сработало очень хорошо.
IЯ видел это, но это мне не очень помогло: Как узнать имя и фамилию из контактов Android?
Кто-нибудь может мне помочь с этим?
спасибо заранее!