Как получить «ключ поиска» в Android Contacts API?

Ниже приведена документация Android.

Вы можете получить ключ поиска из самого контакта, это столбец в таблице ContactsContract.Contacts.

Uri lookupUri = Uri.withAppendedPath(Contacts.CONTENT_LOOKUP_URI, lookupKey)

Cursor c = getContentResolver().query(lookupUri, new String[]{Contacts.DISPLAY_NAME},        ...);
try {
c.moveToFirst();
String displayName = c.getString(0);
} finally {
c.close();
}

но не смог заставить его работать.

Я посетил ответы на Stackoverflow здесь и здесь, но в вену.

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


person Gaurav Agarwal    schedule 04.03.2012    source источник


Ответы (1)


Код в документации относится к тому, как использовать lookupKey после его получения, а не к тому, как его получить.

Как они сказали, вы можете получить его из таблицы контактов. Итак, чтобы получить lookupKey для каждого контакта в вашем списке контактов, вы можете использовать следующую проекцию (остальная часть предоставленного кода предназначена только для отображения результатов, вы можете использовать ее по мере необходимости). хотеть):

String [] PROJECTION = new String [] {  ContactsContract.Contacts.LOOKUP_KEY };

Cursor cursor = getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, PROJECTION, null, null, null);


for(cursor.moveToFirst(); cursor.moveToNext(); cursor.isAfterLast()) {
     Log.d(LOG_TAG, "lookupKey for contact:  " + cursor.getString(1) + ", is: " + cursor.getString(0));
}
person Amokrane Chentir    schedule 04.03.2012
comment
Что-то не так с моим ответом? Всегда рад узнавать новое, но, пожалуйста, когда голосуете против, объясните почему?! Потому что я действительно думаю, что это хороший ответ на его вопрос, поскольку он предоставляет ключи поиска для каждого контакта (я написал код и протестировал его). - person Amokrane Chentir; 04.03.2012
comment
Я не знаю, кто проголосовал за это, я все еще пытаюсь понять ваш ответ, как только я закончу, я прокомментирую. - person Gaurav Agarwal; 04.03.2012
comment
У каждого контакта есть lookupKey. Код, показанный в моем ответе, поможет вам получить lookupKey для каждого из них. Не стесняйтесь просить дополнительных объяснений, если это неясно. - person Amokrane Chentir; 04.03.2012
comment
В документации Android говорится: Если вам нужно прочитать отдельный контакт, рассмотрите возможность использования CONTENT_LOOKUP_URI вместо CONTENT_URI. [ссылка]developer.android.com/reference/android/provider/ Но в вашем ответе мы фактически используем CONTENT_URI для получения отображаемого имени. - person Gaurav Agarwal; 04.03.2012
comment
Думаю lookupkey только для одного контакта. Документация Android Если вам нужно прочитать отдельный контакт, рассмотрите возможность использования CONTENT_LOOKUP_URI вместо CONTENT_URI. - person Gaurav Agarwal; 18.03.2012