Synchronisieren Sie den SyncAdapter mit * lokalen * Google Mail- und Facebook-App-Daten

9

Für eine App, die ich entwickeln muss, muss ich mit einem SyncAdapter sowohl mit Google Mail als auch mit Facebook Daten synchronisieren können. Ich hoffe, dass ich mit den lokalen Facebook- und Gmail-Apps (falls verfügbar) statt mit ihren Remote-Servern synchronisieren kann. Die Synchronisierung mit den lokalen Apps würde weniger Akkuverbrauch, weniger Netzwerknutzung, schnellere Synchronisierung usw. bedeuten. Natürlich werde ich bei Bedarf die richtigen Berechtigungen festlegen.

Meine Fragen :

  • Wenn eine der Apps (gmail / facebook) verfügbar ist, ist es möglich, sie nach Daten (Nachrichten, Ereignisse usw.) abzufragen?
  • Falls nicht, ist es möglich, ein Authentifizierungstoken (oder eine Art von Anmeldeinformationen) von ihnen zu erhalten, mit dem ich den Server abfragen kann, ohne dass der Benutzer erneut einen Benutzernamen und ein Passwort eingeben muss?
  • Wenn das möglich ist, ist es auch möglich, automatisch zu synchronisieren, sobald eine der Facebook- oder Gmail-Apps synchronisiert wird, damit ich sofort neue Daten erhalte?

Wenn keine davon verfügbar ist, muss ich die Daten selbst abrufen, das ist für diese Frage nicht relevant.

    
android developer 17.07.2012, 23:25
quelle

2 Antworten

3

Ich kann nicht für Facebook sprechen, aber die Google Mail-App erlaubt dies nicht. Früher hat es funktioniert, aber seitdem haben sie es gesichert, sodass nur Google-Apps den E-Mail-Content-Provider abfragen können. Das Beste, was Sie tun können, ist die Anzahl der Nachrichten mit der Etiketten-API . Sie können ein Authentifizierungstoken (ClientLogin oder OAuth2) für Google-Dienste mit dem Standard Android AccountManager abrufen. Sie müssen es dann verwenden, um eine Verbindung zu der bestimmten API herzustellen, um die tatsächlichen Daten zu erhalten.

    
Nikolay Elenkov 03.08.2012, 06:47
quelle
2

Ah, jetzt habe ich Ihre Frage besser verstanden. Ich glaube nicht, dass Sie die Daten, an denen Sie interessiert sind, direkt von den lokalen Kopien der Apps erhalten können. Es ist eine interessante Idee und vernünftig für die Geschwindigkeit / Raum / Bandbreite Gründe, die Sie vorschlagen, aber würde erhebliche Unterstützung von den Apps benötigen, die derzeit nicht verfügbar ist.

Der Versuch, die erneute Eingabe des Passworts durch den Benutzer zu vermeiden, ist auch dann noch fast unmöglich, wenn die Apps die gemeinsame Nutzung lokaler Daten unterstützen. Wie wird die App von Google Mail prüfen, ob Ihre App die Berechtigung zum Lesen aller Daten haben sollte? Vermutlich durch Eingabe Ihres GMail-Benutzernamens und -Passworts. Lediglich auf dem gleichen Gerät zu sein bedeutet definitiv kein vollständiges Vertrauen.

Mit einem SyncAdapter und dem Speichern des Authentifizierungstokens, wie im Beispielprojekt gezeigt, sollten Sie den Benutzer auf die einmalige Eingabe seiner Anmeldeinformationen beschränken können, aber das ist das Beste, was Sie tun können.

>

Vorher:

Haben Sie sich den im Lieferumfang des SDK enthaltenen SampleSyncAdapter angesehen?

Diese Anweisungen geben einen schnellen Überblick über den Zugriff auf die Beispiele.

Wenn Sie Eclipse verwenden, ist es sogar noch einfacher, als es dort vorgeschlagen wird. Um das Beispielprojekt zu erhalten:

  1. Wählen Sie File & gt; New & gt; %Code%
  2. Wählen Sie Other... & gt; %Code%
  3. Wählen Sie, welches Ziel / welche API-Ebene für Ihr Projekt (wahrscheinlich das neueste) gilt
  4. Wählen Sie das Beispielprojekt aus, an dem Sie interessiert sind, SampleSyncAdapter in diesem Fall

Das Beispielprojekt ist ein großartiges Beispiel für die Verwendung von SyncAdaptern und sollte leicht für die Verbindung mit Google Mail, Facebook usw. geeignet sein.

    
blahdiblah 27.07.2012 01:33
quelle