Consultez la section sur l'agrégation automatique des données de contact dans Utilisation de l'API Contacts à partir des ressources techniques sur le site des développeurs Android .
Comme l'article l'explique:
Lorsqu'un contact brut est ajouté ou modifié, le système recherche les contacts bruts correspondants (qui se chevauchent) avec lesquels l'agréger. Il peut ne pas trouver de contacts bruts correspondants, auquel cas il créera un contact agrégé contenant uniquement le contact brut d'origine. S'il trouve une seule correspondance, il crée un nouveau contact qui contient les deux contacts bruts. Et il peut même trouver plusieurs contacts bruts similaires, auquel cas il choisit la correspondance la plus proche.
Deux contacts bruts sont considérés comme une correspondance si au moins une de ces conditions est remplie:
- Ils ont des noms correspondants.
- Leurs noms sont constitués des mêmes mots mais dans un ordre différent (par exemple,
"Bob Parr"
et "Parr, Bob"
)
- L'un d'eux a un nom abrégé commun pour l'autre (par exemple,
"Bob Parr"
et "Robert Parr"
)
- L'un d'eux a juste un prénom ou un nom et correspond à l'autre contact brut. Cette règle est moins fiable, elle ne s'applique donc que si les deux contacts bruts partagent également d'autres données comme un numéro de téléphone, une adresse e-mail ou un surnom (par exemple,
Helen ["elastigirl"] = Helen Parr ["elastigirl"]
)
- Au moins l'un des deux contacts bruts n'a pas de nom et ils partagent un numéro de téléphone, une adresse e-mail ou un surnom (par exemple,
Bob Parr [[email protected]] = [email protected]
).
Lors de la comparaison des noms, le système ignore les différences majuscules / minuscules (Bob=BOB=bob)
et les signes diacritiques (Hélène=Helene)
. Lorsque l'on compare deux numéros de téléphone le système ne tient pas compte des caractères spéciaux tels que "*"
, "#"
, "(", ")"
et des espaces. De plus, si la seule différence entre deux nombres est que l'un a un code de pays et l'autre pas, alors le système considère que ceux-ci sont une correspondance (sauf pour les nombres dans le code de pays du Japon)
L'agrégation automatique n'est pas permanente; tout changement d'un contact brut constitutif peut créer un nouvel agrégat ou casser un existant.
L'article explique ensuite les différents modes qu'une application peut attribuer aux contacts bruts qu'elle crée. Selon le mode, le système:
- Agréger automatiquement le contact car des similitudes sont trouvées avec d'autres contacts. Lorsque les similitudes n'existent plus, ces agrégations seront supprimées.
- Ne regroupez jamais le contact avec un autre.
- N'effectuez aucune agrégation supplémentaire sur un contact, même si ce contact change de façon à être retiré d'un groupe d'agrégats.
Outre cette agrégation automatique, les applications sont également autorisées à configurer manuellement des contacts agrégés. Dans ces cas, l'algorithme dépend de l'application.
Enfin, vous pouvez joindre manuellement des contacts dans le peuple application en éditant une d'une paire de contacts, et en sélectionnant Join
dans le menu de trop - plein.