Я создаю приложение для контактов android, поэтому я регулярно читаю контакты пользователя и сохраняю их в своем приложении. Для этого мне нужно полагаться на какой-то ID
так что я знаю, какой контакт я должен обновить (или добавить/удалить) в моем приложении и Contacts Provider поставляет некоторым из них:Должен ли я полагаться на SOURCE_ID при чтении контактов Android?
CONTACT_ID
является совокупным контактом идентификатора ,- каждый агрегат контакт состоит из одного или нескольких сырых контактов, каждый со своим собственным
RAW_CONTACT_ID
, - и самое главное, каждый Сырое Контакт имеет
SOURCE_ID
, который, как предполагается, идентификатор сервера, то есть идентификатор этого контакта на сервере этой учетной записи.
Я решил положиться на SOURCE_ID
, так как это звучит как самый стабильный. Например. когда пользователь удаляет и повторно добавляет одну и ту же учетную запись на своем устройстве, я бы не хотел, чтобы контакты этой учетной записи получали разные идентификаторы, потому что я не смог бы их сопоставить в своем приложении.
Однако, только протокол синхронизации Gmail, похоже, сохраняет обещание, описанное ниже. К сожалению, адаптеров синхронизации Exchange нет, SOURCE_ID
изменений, и это определенно не любой идентификатор сервера, так как он имеет небольшое число, например 23:4
.
Вопрос: Есть идеи, как преодолеть эту проблему? Правильно ли я использую ID
? Сохраняет ли обменный адаптер «постоянный идентификатор сервера» в другом поле?
Документация: SOURCE_ID
must be unique for each account type and should be stable across syncs:
- Unique: Каждый сырой контакт для учетной записи, должны иметь свой собственный идентификатор источника. Если вы не применяете это, вы вызовете проблемы в приложении . Обратите внимание, что два необработанных контакта для одного и того же типа учетной записи могут иметь одинаковый исходный идентификатор. Например, необработанный контакт «Thomas Higginson» для учетной записи [email protected] разрешен до , имеет тот же идентификатор источника, что и исходный контакт «Thomas Higginson» для учетной записи [email protected]
- Стабильный: Идентификаторы источников являются постоянной частью данных онлайн-сервиса для сырого контакта. Например, если пользователь удаляет Контакты Storage из настроек Apps и повторно синхронизирует, восстановленные необработанные контакты должны иметь те же исходные идентификаторы, что и раньше. Если вы не применяете это, ярлыки перестанут работать.
Итак, вы полагаете, что если я полагаюсь на 'IDs', я должен ожидать, что они со временем меняются. Итак, какую ссылку я могу использовать, это более постоянный, если не эти идентификаторы? –
На ваш вопрос ответил другой ответ. Ключ, который вам нужно использовать, - «Contacts.LOOKUP_KEY». Обычно ключ поиска представляет собой составной ключ, который генерируется из многих компонентов. Я только что отредактировал свой ответ – Dibzmania