См. Раздел « Автоматическое объединение контактных данных» в разделе « Использование 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
в меню переполнения.