Мне нужно запросить контакты с устройства Android для проекта, над которым я работаю, и мне нужно сохранить их таким образом, чтобы я мог связать экземпляр в приложении с контактом в телефонной книге.
Я обнаружил, что CONTACT_ID (который является ссылкой на _ID ) каждого контакта может меняться между устройствами, поэтому если я переключусь на другое устройство Android, этот идентификатор будет недействительным.
Временное решение использовало контакт SOURCE_ID , который представляет собой строку, однозначно идентифицирующую эту строку для своей исходной учетной записи.Решение было довольно хорошим, потому что, если контакт получен из (например) учетной записи Google, он будет иметь одинаковый идентификатор на каждом устройстве, которое у меня будет.Проблема в том, что не у каждого контакта есть SOURCE_ID .
Можно также запросить конкретный контакт, используя его данные в качестве фильтров, которые могут работать как уникальный идентификатор, например, его телефон.число и т. д. Однако у каждой части данных есть недостаток.Например: у контакта может быть несколько телефонных номеров (что все еще в порядке), и номера могут варьироваться (например: 202-555-0105 - это то же самое, что + 1-202-555-0105, что также совпадает с (202) 555 0105, а также 2025550105).
Итак, после решения проблемы -
Как получить уникальный идентификатор для контактов в телефонной книге Androidзначит, они будут одинаковыми для разных устройств?
Примечание. Это возможно в IOS по умолчанию (см. документация ) -
Контакты в разных аккаунтах, представляющие одного и того же человека, могут автоматически связываться друг с другом.Связанные контакты отображаются в приложениях OS X и iOS как объединенные контакты.Унифицированный контакт - это временное представление в памяти набора связанных контактов, которые объединены в один контакт.
По умолчанию структура контактов возвращает унифицированные контакты.Каждый извлеченный объект унифицированного контакта (CNContact) имеет свой уникальный идентификатор, который отличается от идентификатора любого отдельного контакта в наборе связанных контактов.Повторная проверка унифицированного контакта должна производиться с его идентификатором.