2017-05-31 1 views
1

Ich habe eine Anwendung erstellt, die 2000 Kontakte zu nativen Android-Kontakten exportieren muss. Ich verwende contentresolver.applyBatch, um dies zu ermöglichen, aber wenn sich der Benutzer abmeldet, möchte ich alle exportierten Kontakte löschen. Es kann vorkommen, dass der contentresolver nicht vollständig mit dem Speichern der Kontakte fertig ist.Wie Abbrechen contentresolver applyBatch?

Meine Frage:

Wie kann ich die folgende opperation ?:

resolver.applyBatch(ContactsContract.AUTHORITY, ops); 

Was ich habe versucht, so weit abbrechen:

Ich habe versucht, stornieren die Sync des Inhaltssolvers wie folgt:

ContentResolver.cancelSync(null, ContactsContract.AUTHORITY); 

Das funktioniert nicht und ich bin mir auch nicht sicher über den Nullwert. Es sagt, dass es ein Konto braucht, um es für zu synchronisieren. Aber ich beginne die Synchronisierung nicht auf einem bestimmten Konto, also warum würde es benötigt werden?

Was brauche ich?

Etwas wie resolver.stopBatch (eine Möglichkeit, die Anwendung der Charge zu stoppen).

Vielen Dank für Ihre Mühe, dies zu lesen.

Antwort

1

Wenn ich den Anwendungsfall verstehe, synchronisieren Sie in neueRawContacts in das Gerät, wenn sich ein Benutzer bei Ihrer App anmeldet.

Wenn dies der Fall ist, sollten Sie eine SyncProvider erstellen und in RawContacts für ein Konto synchronisieren, das an Ihre App und den Paketnamen gebunden ist. Wenn ein Nutzer Ihre App deinstalliert, wird das Konto automatisch zusammen mit den Daten, die Sie in das Gerät synchronisiert haben, entfernt. Wenn sich ein Benutzer von seinem Konto abmeldet, entfernen Sie einfach das Kontaktkonto programmatisch, was ebenfalls entfernt wird Alle Daten sind mit dem Gerät synchronisiert.

Lesen Sie diese Anleitungen, wie ein Kontakte-Konto zu erstellen, eine SyncProvider und es verwenden, Kontakte auf Ihrem Konto zu synchronisieren:

+0

Ich brauchte einige Zeit, um all diese Links zu lesen, aber wie funktioniert das Erstellen von RawContacts im Sync Adapter? Immer noch mit einem ContentResolver? – jobbert

+0

Ja, Dinge in die DB zu setzen ist die gleiche, stellen Sie einfach sicher, dass die account_type und account_name Werte Ihrer neuen RawContacts zu Ihrem eigenen erstellten Account gehören. – marmor

+0

Ich werde mich definitiv darum kümmern. Es widerspricht immer noch meinem Gefühl, weil ich es seltsam finde, einen Account dafür zu erstellen. Aber ich denke, dass ich definitiv einen SyncService benötige und wie ich in den Tutorials lese, benötigst du einen Account dafür. Danke für deine Antwort. Ich werde dich wissen lassen, ob und wann es mir gelungen ist :). – jobbert

Verwandte Themen