Wie funktioniert die Android-Kontaktverknüpfung?

8

Ich möchte verstehen, wie das Verknüpfen von Kontakten in Android funktioniert - oder um genau zu sein, ich möchte es ziemlich tief verstehen, fast aus algorithmischer Sicht .

Was ich auf meinem Telefon beobachtet habe, ist, dass einige Kontakte automatisch verknüpft wurden, andere nicht (obwohl Android, wenn Sie zum manuellen Verknüpfungsbildschirm gehen, ziemlich gute Übereinstimmungen vorschlägt), und ich bin darüber verwirrt.

Meine spezifischen Fragen sind also:

  1. Was ist der Auslöser für die automatische Kontaktverknüpfung? Wann tritt es auf?
  2. Angenommen, die Antwort auf 1) lautet "Wenn ein neuer Kontakt hinzugefügt wird, entweder manuell oder über die Kontosynchronisierung". Was passiert also, wenn dieser neue Kontakt hinzugefügt wird? Wird Android alle vorhandenen Kontakte durchsuchen und versuchen herauszufinden, ob der neue Kontakt nur ein verknüpfter Kontakt ist?
  3. Wann erkennt Android den neuen Kontakt als verknüpften Kontakt? Wann stimmen die Namen überein? Telefonnummern? E-Mails? Eine Kombination davon?

Jeder Einblick würde mir helfen, das zu klären, danke.

Borek Bernard
quelle

Antworten:

10

Weitere Informationen finden Sie im Abschnitt zur automatischen Aggregation von Kontaktdaten in der API "Verwenden der Kontakte" in den technischen Ressourcen auf der Android Developers- Website.

Wie der Artikel erklärt:

Wenn ein Rohkontakt hinzugefügt oder geändert wird, sucht das System nach übereinstimmenden (überlappenden) Rohkontakten, mit denen es aggregiert werden kann. Möglicherweise werden keine passenden Rohkontakte gefunden. In diesem Fall wird ein aggregierter Kontakt erstellt, der nur den ursprünglichen Rohkontakt enthält. Wenn eine einzelne Übereinstimmung gefunden wird, wird ein neuer Kontakt erstellt, der die beiden Rohkontakte enthält. Und es kann sogar mehrere ähnliche Rohkontakte finden. In diesem Fall wählt es die engste Übereinstimmung.

Zwei Rohkontakte gelten als Übereinstimmung, wenn mindestens eine dieser Bedingungen erfüllt ist:

  • Sie haben übereinstimmende Namen.
  • Ihre Namen bestehen aus den gleichen Wörtern, aber in unterschiedlicher Reihenfolge (zum Beispiel "Bob Parr"und "Parr, Bob")
  • Einer von ihnen hat einen gemeinsamen Kurznamen für den anderen (zum Beispiel "Bob Parr"und "Robert Parr")
  • Einer von ihnen hat nur einen Vor- oder Nachnamen und passt zum anderen Rohkontakt. Diese Regel ist weniger zuverlässig und gilt daher nur, wenn die beiden unformatierten Kontakte auch andere Daten wie eine Telefonnummer, eine E-Mail-Adresse oder einen Spitznamen gemeinsam nutzen (z. B. Helen ["elastigirl"] = Helen Parr ["elastigirl"]).
  • Mindestens einem der beiden unformatierten Kontakte fehlt der Name vollständig, und sie teilen sich eine Telefonnummer, eine E-Mail-Adresse oder einen Spitznamen (zum Beispiel Bob Parr [[email protected]] = [email protected]).

Beim Vergleichen von Namen ignoriert das System Unterschiede zwischen Groß- (Bob=BOB=bob)und Kleinbuchstaben und diakritische Zeichen (Hélène=Helene). Beim Vergleich von zwei Telefonnummern ignoriert das System mit Sonderzeichen wie "*", "#", "(", ")", und Leerzeichen. Auch wenn der einzige Unterschied zwischen zwei Nummern darin besteht, dass eine einen Ländercode hat und die andere nicht, dann betrachtet das System diese als übereinstimmend (mit Ausnahme der Nummern im japanischen Ländercode).

Die automatische Aggregation ist nicht permanent. Jede Änderung eines konstituierenden Rohkontakts kann ein neues Aggregat erzeugen oder ein bestehendes auflösen.

In diesem Artikel werden dann die verschiedenen Modi erläutert, die eine Anwendung den von ihr erstellten Rohkontakten zuweisen kann . Je nach Modus wird das System entweder:

  • Aggregieren Sie den Kontakt automatisch, wenn Ähnlichkeiten mit anderen Kontakten gefunden werden. Wenn keine Ähnlichkeiten mehr bestehen, werden diese Aggregationen entfernt.
  • Aggregieren Sie niemals den Kontakt mit anderen.
  • Führen Sie keine weitere Aggregation für einen Kontakt durch, selbst wenn sich dieser Kontakt so ändert, dass er aus einer Aggregatgruppe entfernt wird.

Neben dieser automatischen Aggregation können Anwendungen Aggregatkontakte auch manuell einrichten. In diesen Fällen hängt der Algorithmus von der Anwendung ab.

Schließlich können Sie Kontakte in der Personen- App manuell verbinden, indem Sie einen von zwei Kontakten bearbeiten und Joinaus dem Überlaufmenü auswählen .

ctt
quelle
Können Sie den Link zusammenfassen? Wenn es tot ist, wird Ihre Antwort viel weniger nützlich.
Matthew Read
@ MatthewRead sicher. Da die Erklärung auf der Website ziemlich kurz ist, habe ich mich entschlossen, sie mit korrekten Zitaten und Referenzen zu versehen. Der Vollständigkeit halber habe ich auch Details zum manuellen Aggregieren von Kontakten angegeben.
ctt
@Borek, ich weiß, dass es eine wirklich alte Antwort ist, aber macht es Ihnen etwas aus, sie als Antwort auf Ihre Frage zu markieren?
ctt
Die Verbindung ist unterbrochen. Könnten Sie @ctt zufällig die Antwort mit einem neuen Link aktualisieren?
Sammy