2016-04-09 5 views

Antwort

4

Die Kontakte Ihres Kontos sind in der Tabelle RawContacts gespeichert. Die Daten (z. B. Telefonnummern, E-Mail-Adressen) sind in der Tabelle Data gespeichert (wobei RAW_CONTACT_ID auf die Zeile _ID dieses Kontakts in der Tabelle RawContacts zeigt).

Um neue Kontakte zu erkennen, muss Ihr Sync-Adapter das Feld SOURCE_ID in der Tabelle RawContacts verwalten.

Die Dokumentation sagt über SOURCE_ID (in den Spalten von Feldern an der Spitze):

String, der eindeutig diese Zeile zu seiner Quelle Konto identifiziert. In der Regel wird es zu dem Zeitpunkt gesetzt, an dem der rohe Kontakt eingefügt und danach nie geändert wird. Die einzige bemerkenswerte Ausnahme ist ein neuer Kontakt roh: es wird einen Kontonamen und -typ (und möglicherweise einen Datensatz) haben, aber keine Quell-ID. Dies zeigt dem Synchronisierungsadapter an, dass ein neuer Kontakt serverseitig erstellt werden muss und seine ID im entsprechenden SOURCE_ID-Feld des Telefons gespeichert werden muss.

Ihr Sync-Adapter sollte also nach Kontakten suchen, die zu Ihrem Kontotyp gehören und eine leere SOURCE_ID haben. Nachdem der Kontakt synchronisiert wurde, muss er SOURCE_ID auf einen (nicht leeren) Wert setzen, der den neuen Kontakt identifiziert.

Wenn Sie einen neuen Kontakt vom Server synchronisieren, müssen Sie die SOURCE_ID beim Einfügen des neuen Kontakts auf Android festlegen. Wenn Sie dies nicht tun, führt dies zu Duplikaten (da der Kontakt bei der nächsten Synchronisierung als neuer Kontakt mit dem Server synchronisiert wird).

+0

Vielen Dank für die klare Antwort, schätzen –

+0

@Marten Abgesehen von Google Mail-Kontakten scheinen andere Kontotypen (z. B. Exchange) nicht immer der Regel zu folgen, dass [SOURCE_ID stabil ist] (https://developer.android. com/guide/topics/providers/contacts-provider.html # KontakteProviderMetadata). Haben Sie eine ähnliche Lösung gefunden oder gefunden? –

+0

@ zafeiris.m Tut uns leid, wir haben keine Anwendungsfälle zum Lesen von 'SOURCE_ID' anderer Konten. Also sind wir diesem Problem nie begegnet. – Marten

Verwandte Themen