Как изменить контактные номера на имена контактов?

Есть ли способ отображать имена контактов вместо номеров контактов?

Этот метод возвращает номера телефонов в папке «Входящие», но вместо этого мне нужны имена:

ОБНОВЛЕНИЕ: исходный код изменен.

ПРИМЕЧАНИЕ. Я пытаюсь изменить номера контактов, чтобы они отображались в папке ВХОДЯЩИЕ. Я не пытаюсь получить список всех доступных имен контактов.

public ArrayList<String> fetchInboxNumbers() {

    ArrayList<String> sms = new ArrayList<String>();
    Uri uriSms = Uri.parse("content://sms/inbox");

    Cursor cursor = getContentResolver().query(uriSms,
            new String[] { "_id", "address", "date", "body" }, null, null,                                                              
            null);

    cursor.moveToFirst();
    while (cursor.moveToNext()) {

        String address = cursor.getString(1); // Displays phone number

        sms.add(address);
    }
    return sms;
} // END FETCHINBOX

person Community    schedule 11.06.2012    source источник


Ответы (2)


Есть ли способ отображать имена контактов вместо номеров контактов?

Следующий фрагмент поможет вам.

        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();
person Vipul    schedule 11.06.2012
comment
Я понял, что допустил ошибку в коде, который я разместил ранее. Это версия, с которой я работаю. Я читаю номера в своем почтовом ящике для смс, но он показывает номера телефонов. Вы знаете, как применить к этому приведенный выше код? - person ; 12.06.2012

Я хотел бы добавить к ответу @Vipul Shah.

не лучше ли добавить проекцию только с теми столбцами, которые вам нужно восстановить?

new String [] { ContactsContract.CommonDataKinds.Phone._ID, 
ContactsContract.CommonDataKinds.Phone.NUMBER,
ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME }

С Уважением

person Goofyahead    schedule 11.06.2012