Как работает связывание контактов Android?


8

Я хотел бы понять, как работает связывание контактов в Android, или, если быть точным, я бы хотел понять это довольно глубоко, почти с алгоритмической точки зрения .

Что я заметил на своем телефоне, так это то, что некоторые контакты были связаны автоматически, а некоторые - нет (хотя при переходе на экран ручной привязки Android будет предлагать довольно хорошие совпадения), и я запутался в этом.

Итак, мои конкретные вопросы:

  1. Что является триггером для автоматического связывания контактов? Когда это происходит?
  2. Скажем, что ответ на 1) «при добавлении нового контакта, вручную или с помощью синхронизации учетной записи». Итак, когда этот новый контакт будет добавлен, что произойдет? Будет ли Android проходить через все существующие контакты и пытаться выяснить, является ли новый контакт просто связанным контактом?
  3. Когда Android распознает новый контакт как связанный контакт? Когда имена совпадают? Телефонные номера? Электронные письма? Некоторая комбинация тех?

Любое понимание поможет прояснить это для меня, спасибо.

Ответы:


10

См. Раздел « Автоматическое объединение контактных данных» в разделе « Использование API контактов» из технических ресурсов на сайте разработчиков Android .

Как объясняется в статье:

Когда необработанный контакт добавляется или изменяется, система ищет совпадающие (перекрывающиеся) необработанные контакты, чтобы объединить их. Он может не найти подходящих необработанных контактов, в этом случае он создаст совокупный контакт, который содержит только исходный необработанный контакт. Если он находит одно совпадение, он создает новый контакт, который содержит два необработанных контакта. И он может даже найти несколько похожих необработанных контактов, в этом случае он выбирает наиболее близкое совпадение.

Два необработанных контакта считаются совпадающими, если выполнено хотя бы одно из следующих условий:

  • У них совпадающие имена.
  • Их имена состоят из одних и тех же слов, но в другом порядке (например, "Bob Parr"и "Parr, Bob")
  • Один из них имеет общее короткое имя для другого (например, "Bob Parr"и "Robert Parr")
  • Один из них имеет только имя или фамилию и соответствует другому необработанному контакту. Это правило менее надежно, поэтому оно применяется только в том случае, если два необработанных контакта также делятся некоторыми другими данными, такими как номер телефона, адрес электронной почты или псевдоним (например, Helen ["elastigirl"] = Helen Parr ["elastigirl"])
  • По крайней мере, один из двух необработанных контактов вообще не имеет имени, и у них общий номер телефона, адрес электронной почты или псевдоним (например, Bob Parr [incredible@android.com] = incredible@android.com).

При сравнении имен система игнорирует различия в верхнем / нижнем регистре (Bob=BOB=bob)и диакритические знаки (Hélène=Helene). При сравнении двух телефонных номеров , система игнорирует специальные символы , такие как "*", "#", "(", ")"и пробелы. Кроме того, если единственное различие между двумя числами состоит в том, что у одного есть код страны, а у другого нет, то система считает, что они совпадают (за исключением чисел в коде страны Японии).

Автоматическая агрегация не является постоянной; любое изменение составляющего исходного контакта может создать новый агрегат или разрушить существующий.

Далее в статье объясняются различные режимы, которые приложение может назначать необработанным контактам, которые оно создает. В зависимости от режима система будет:

  • Автоматически объединяйте контакт, если обнаружены сходства с другими контактами. Там, где сходства больше не существует, эти агрегаты будут удалены.
  • Никогда не объединяйте контакт ни с кем другим.
  • Не выполняйте дальнейшую агрегацию для контакта, даже если этот контакт изменится так, что он будет удален из группы агрегирования.

Помимо этой автоматической агрегации, приложениям также разрешается вручную настраивать агрегирующие контакты. В этих случаях алгоритм зависит от приложения.

Наконец, вы можете вручную присоединить контакты в приложении « Люди », отредактировав один из пары контактов и выбрав его Joinв меню переполнения.


Можете ли вы обобщить ссылку? Если он умрет, ваш ответ станет гораздо менее полезным.
Мэтью Прочитано

@ MatthewЧитай наверняка. Поскольку объяснения с сайта довольно лаконичны, я решил добавить в них правильные цитаты и ссылки. Для полноты картины я также включил сведения о ручном объединении контактов.
ctt

@ Борек, я знаю, что это действительно старый ответ, но ты не против пометить его как ответ на свой вопрос?
ctt

Ссылка исчезла. Не могли бы вы @ctt случайно обновить ответ новой ссылкой?
Сэмми
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.