Как получить контактные данные для конкретного контакта - PullRequest
0 голосов
/ 02 декабря 2011

Мне нужно имя контакта, которое включает в себя (FAMILY_NAME, GIVEN_NAME, MIDDLE_NAME, PHONETIC_FAMILY_NAME, PHONETIC_GIVEN_NAME, PHONETIC_MIDDLE_NAME, PREFIX, SUFFIX).

я знаю, что этот столбец с именами из этих имен, начинающихся с 1003 * * **

android.provider.ContactsContract.CommonDataKinds.StructuredName

Но я не могу получить URI данных.

Я работал на устройстве с API-уровнем 8, поэтому я хочу получить эти данные, используя

android.provider.ContactsContract

Я искал околоЭто по обыкновению, но я не могу получить желаемый результат.

Я работаю над этим 4 часа.

Любая помощь будет оценена.

Я использовал этот код

 Cursor cursor = activity.managedQuery(android.provider.ContactsContract.Contacts.CONTENT_URI, null, null, null, null);
        if (cursor != null) 
        {
            if (cursor.moveToFirst()) 
            {

                int rows = cursor.getCount();
                int cols = cursor.getColumnCount();

                 do 
                    {

                         int _id = cursor.getInt(cursor.getColumnIndex("_id"));

                         int times_contacted = cursor.getInt(cursor.getColumnIndex("times_contacted"));
                         int has_phone_number = cursor.getInt(cursor.getColumnIndex("has_phone_number"));
                         int send_to_voicemail = cursor.getInt(cursor.getColumnIndex("send_to_voicemail"));
                         int starred = cursor.getInt(cursor.getColumnIndex("starred"));

// Here i want the contact names But i dont know what column name i have to pass to get them                      

                        }
                    while (cursor.moveToNext());    
            }
            cursor.close();
        }

Заранее спасибо.

1 Ответ

2 голосов
/ 02 декабря 2011

Хорошо, попробуйте это, и дайте мне знать, что произойдет,

Посмотрите на ContactsContract.CommonDataKinds.StructuredName class. Вы можете найти там все колонки, которые вы ищете.

   String whereName = ContactsContract.Data.MIMETYPE + " = ?";
    String[] whereNameParams = new String[] { ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE };
    Cursor nameCur = contentResolver.query(ContactsContract.Data.CONTENT_URI, null, whereName, whereNameParams, ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME);
    while (nameCur.moveToNext()) {
        String given = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME));
        String family = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME));
        String display = nameCur.getString(nameCur.getColumnIndex(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME));
    }
    nameCur.close();

Посмотрите на этот вопрос SO Как получить имя и фамилию из контактов Android?

РЕДАКТИРОВАТЬ: Посмотрите на этот полный пример для работы с контактами Android Работа с контактами Android , теперь, если вы хотите получить больше информации от любых контактов, добавьте конкретный столбец на этом курсор. Дополнительные столбцы см. В ContactsContract.CommonDataKinds .

.
...