Android: управление контактами с помощью ключа поиска - PullRequest
10 голосов
/ 20 сентября 2010

В настоящее время я пишу приложение, которое позволяет сохранять черновики (используя версию Android> = 2.0).Каждый черновик связан с контактом через ContactsContract.Contacts.LOOKUP_KEY.Моя проблема в том, что если я изменю имя моего контакта, ключ поиска также изменится.Это так работает?

Так для чего мне нужен ключ поиска?Я думал, что ключ поиска никогда не меняется, и теперь он все равно меняется.Я запутался в этом поведении ...

Может кто-нибудь объяснить мне, как постоянно связываться с контактом?Должен ли я использовать идентификаторы вместо ключа поиска?

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

Ответы [ 2 ]

15 голосов
/ 29 сентября 2010

Насколько я понимаю, ключ поиска является структурированным / иерархическим ключом. Следовательно, строго говоря, он может измениться, но все же использоваться для поиска вашего контакта, используя соответствующий метод:

    Uri lookupUri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_LOOKUP_URI, lookupKey);
    Uri res = ContactsContract.Contacts.lookupContact(getContentResolver(), lookupUri);
4 голосов
/ 27 апреля 2011

Отредактировано:

Почему вы не можете найти идентификатор контакта или ключ поиска с помощью необработанного идентификатора контакта? это ошибка в 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, система сначала попытается использовать длинный идентификатор. Это очень быстрый запрос. Если контакт не найден или найденный контакт имеет неправильный ключ поиска, поставщик контента проанализирует ключ поиска и отследит исходные необработанные контакты. Если ваше приложение массово обрабатывает контакты, вы должны поддерживать оба идентификатора. Если ваше приложение работает с одним контактом на действие пользователя, вам, вероятно, не нужно беспокоиться о сохранении длинного идентификатора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...