Como funciona a vinculação de contatos do Android?

8

Gostaria de entender como funciona o vínculo de contatos no Android - ou, para ser específico, gostaria de entender profundamente, quase do ponto de vista algorítmico .

O que eu observei no meu telefone é que alguns contatos foram vinculados automaticamente, outros não (embora quando você vá para a tela de vinculação manual o Android sugerirá boas correspondências) e estou confuso sobre isso.

Então, minhas perguntas específicas são:

  1. Qual é o gatilho para a vinculação automática de contatos? Quando isso ocorre?
  2. Digamos que a resposta para 1) seja "quando um novo contato for adicionado, manualmente ou via sincronização da conta". Então, quando esse novo contato for adicionado, o que acontecerá? O Android passará por todos os contatos existentes e tentará descobrir se o novo contato é apenas um contato vinculado?
  3. Quando o Android reconhecerá o novo contato como um contato vinculado? Quando os nomes correspondem? Números de telefone? Emails? Alguma combinação desses?

Qualquer insight ajudaria a esclarecer isso para mim, obrigado.

Borek Bernard
fonte

Respostas:

10

Consulte a seção Agregação automática de dados de contato na API Usando os contatos nos recursos técnicos do site Android Developers .

Como o artigo explica:

Quando um contato bruto é adicionado ou modificado, o sistema procura contatos brutos correspondentes (sobrepostos) com os quais agregar. Pode não encontrar contatos brutos correspondentes; nesse caso, criará um contato agregado que contém apenas o contato bruto original. Se encontrar uma única correspondência, cria um novo contato que contém os dois contatos brutos. E pode até encontrar vários contatos brutos semelhantes, caso em que escolhe a correspondência mais próxima.

Dois contatos brutos são considerados correspondentes se pelo menos uma dessas condições for atendida:

  • Eles têm nomes correspondentes.
  • Seus nomes consistem nas mesmas palavras, mas em ordem diferente (por exemplo, "Bob Parr"e "Parr, Bob")
  • Um deles tem um nome abreviado comum para o outro (por exemplo, "Bob Parr"e "Robert Parr")
  • Um deles tem apenas um nome ou sobrenome e corresponde ao outro contato bruto. Essa regra é menos confiável, portanto só se aplica se os dois contatos brutos também estiverem compartilhando outros dados, como um número de telefone, um endereço de email ou um apelido (por exemplo, Helen ["elastigirl"] = Helen Parr ["elastigirl"])
  • Pelo menos um dos dois contatos brutos está sem o nome completo e eles estão compartilhando um número de telefone, um endereço de email ou um apelido (por exemplo Bob Parr [[email protected]] = [email protected]).

Ao comparar nomes, o sistema ignora diferenças em maiúsculas / minúsculas (Bob=BOB=bob)e marcas diacríticas (Hélène=Helene). Ao comparar dois números de telefone o sistema ignora caracteres especiais, como "*", "#", "(", ")", e espaços em branco. Além disso, se a única diferença entre dois números é que um possui um código de país e o outro não, então o sistema considera esses coincidentes (exceto para números no código de país do Japão)

A agregação automática não é permanente; qualquer alteração de um contato bruto constituinte pode criar um novo agregado ou interromper um existente.

O artigo continua explicando os vários modos que um aplicativo pode atribuir aos contatos brutos que ele cria. Dependendo do modo, o sistema irá:

  • Agregue automaticamente o contato conforme as semelhanças são encontradas com outros contatos. Onde as semelhanças não existirem mais, essas agregações serão removidas.
  • Nunca agregue o contato a nenhum outro.
  • Não execute nenhuma agregação adicional em um contato, mesmo que esse contato seja alterado de forma que seja retirado de um grupo agregado.

Além dessa agregação automática, os aplicativos também podem configurar manualmente os contatos agregados. Nestes casos, o algoritmo depende da aplicação.

Por fim, você pode ingressar manualmente nos contatos no aplicativo People editando um de um par de contatos e selecionando Joinno menu estourar.

ctt
fonte
Você pode resumir o link? Se ficar morto, sua resposta se tornará muito menos útil.
Matthew Leia
@MatthewRead sure. Como a explicação do site é bastante concisa, decidi incluí-la com citações e referências adequadas. Para completar, também incluí detalhes sobre a agregação manual de contatos.
12/12
@Borek, eu sei que é uma resposta muito antiga, mas você se importa de marcá-la como resposta à sua pergunta?
ctt
O link ficou morto. Você poderia @ctt por acaso atualizar a resposta com um novo link?
Sammy