Android: управление контактами с помощью клавиши поиска
В настоящее время я пишу приложение, которое позволяет сохранять черновики (с использованием версии для Android >= 2.0). Каждый черновик подключается к контакту через ContactsContract.Contacts.LOOKUP_KEY
.
Моя проблема заключается в том, что если я изменил имя моего контакта, изменится и ключ поиска. Так ли это работает?
Итак, для чего нужен ключ поиска? Я думал, что ключ поиска никогда не меняется, и теперь он все равно меняется. Я смущен этим поведением...
Может кто-нибудь объяснить мне, как постоянно связываться с контактом? Должен ли я использовать идентификаторы вместо ключа поиска?
Спасибо заранее.
Ответы
Ответ 1
Насколько я понимаю, ключ поиска является структурированным/иерархическим ключом. Следовательно, строго говоря, он может измениться, но все же будет использоваться для поиска вашего контакта с помощью соответствующего метода:
Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);
Ответ 2
Отредактировано:
Почему бы вам не найти идентификатор контакта или ключ поиска с помощью идентификатора raw-контакта? это ошибка в 2.1.
Клавиша поиска была основана на имени контакта для несинхронизированных контактов.
http://comments.gmane.org/gmane.comp.handhelds.android.devel/130677
=============================================== ===================
Я еще не пытался. Но я нашел некоторую информацию об этом.
http://developer.android.com/resources/articles/contacts.html
....
Если производительность является проблемой для вашего приложения, вы можете захотеть сохранить как поиск, так и длинный идентификатор контакта и создать URI поиска из обоих идентификаторов, как показано ниже:
Uri lookupUri = getLookupUri(contactId, lookupKey)
Когда оба идентификатора присутствуют в URI, система сначала попытается использовать длинный идентификатор. Это очень быстрый запрос. Если контакт не найден, или если тот, который найден, имеет неправильный ключ поиска, поставщик контента проанализирует ключ поиска и отследит исходные необработанные контакты. Если ваше приложение содержит массовые процессы, вы должны поддерживать оба идентификатора. Если ваше приложение работает с одним контактом для каждого действия пользователя, вам, вероятно, не нужно беспокоиться о сохранении длинного идентификатора.