Получение информации о пользователе из списка контактов Android

Мне нужно получить имя, адрес электронной почты и номер телефона от каждого контакта из моего списка контактов.

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

Вот мой код:

Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, null,null, null);
        while (phones.moveToNext()) {

            String name = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME));
            String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
            String email = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Email.ADDRESS));

            ContactItem objContact = new ContactItem();
            objContact.setName(name);
            objContact.setPhoneNo(phoneNumber);
            objContact.setEmail(email);
            list.add(objContact);

        }
        phones.close();

person Ale    schedule 02.07.2013    source источник


Ответы (2)


    Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI,null, null, null, null);
    while (cursor.moveToNext()) {
        String contactId = cursor.getString(cursor.getColumnIndex(
                ContactsContract.Contacts._ID));

        //May want to get basic info here like name, phone
        //Example:
        //Cursor phones = getContentResolver().query( ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID +" = "+ contactId, null, null);
        //while (phones.moveToNext()) {
        //    String phoneNumber = phones.getString(phones.getColumnIndex( ContactsContract.CommonDataKinds.Phone.NUMBER));
        //    Log.i("phone", phoneNumber);
        //}
        //phones.close();

        Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId, null, null);
        while (emails.moveToNext()) {
            String emailAddress = emails.getString(
                    emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));

            Log.i("emails", emailAddress);
        }
        emails.close();
    }
    cursor.close();

Источник и ссылка: Как читать контакты на Android 2.0

person Boris Mocialov    schedule 02.07.2013
comment
Спасибо, что поделились, +1. - person justLearning; 19.11.2015

public void onActivityResult (int reqCode, int resultCode, Intent data) { super.onActivityResult (reqCode, resultCode, данные);

    switch (reqCode) {
    case (PICK_CONTACT):
        if (resultCode == Activity.RESULT_OK) {
            String phoneNumber = null;
            String name = null;
            String emailAddress = null;

            Uri contactData = data.getData();
            Cursor c = managedQuery(contactData, null, null, null, null);

            if (c.moveToFirst()) {
                Cursor cursor = null;

                cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
                while (cursor.moveToNext()) {
                    String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));
                    name = c.getString(c.getColumnIndexOrThrow(ContactsContract.Contacts.DISPLAY_NAME));
                    // May want to get basic info here like name, phone
                    // Example:
                    Cursor phones = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = " + contactId,
                            null, null);
                    while (phones.moveToNext()) {
                        phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
                        Log.i("phone", phoneNumber);
                    }
                    phones.close();

                    Cursor emails = getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI, null, ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = " + contactId,
                            null, null);
                    while (emails.moveToNext()) {
                        emailAddress = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));
                        Log.i("emails", emailAddress);
                    }
                    emails.close();
                }
                cursor.close();

                Log.i(DEBUG_TAG, "Got a contact result: " + name + emailAddress + "Phone Number is :- " + phoneNumber);
                Toast.makeText(getApplicationContext(), name, Toast.LENGTH_SHORT).show();

            }
        }
    }
}
person Abhishek2k6    schedule 04.05.2014