2015-06-23 25 views
10

Ich habe derzeit meine Android-App eingerichtet, um die AccountManager-Funktion von Android zu verwenden, wobei SyncAdapter und ein authentifiziertes Konto automatisch synchronisiert werden.Android-Mehrfachsynchronisierungsadapter wie Google-Konto?

Ich habe nur 1 Sync-Adapter läuft, der den gesamten Inhalt synchronisiert, aber ich möchte dies heraus trennen, um synchronisiert für verschiedene Inhalte in verschiedenen Intervallen durchzuführen.

Wie kann ich mehrere Synchronisierungspunkte wie Google haben?

Google account screenshot

Antwort

22

Sie müssen nur mehrere Sync-Adapter definieren, den gleichen Kontotyp verwenden.

Das Manifest enthält:

<service android:exported="true" android:name="com.example.FooSyncAdapterService"> 
    <intent-filter> 
    <action android:name="android.content.SyncAdapter" /> 
    </intent-filter> 
    <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter_foo" /> 
</service> 
<service android:exported="true" android:name="com.example.BarSyncAdapterService"> 
    <intent-filter> 
    <action android:name="android.content.SyncAdapter" /> 
    </intent-filter> 
    <meta-data android:name="android.content.SyncAdapter" android:resource="@xml/syncadapter_bar" /> 
</service> 

Und syncdataper_foo ist

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:contentAuthority="foo" 
    android:accountType="com.example" 
    android:allowParallelSyncs="true" /> 

Und syncdataper_bar ist

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:contentAuthority="bar" 
    android:accountType="com.example" 
    android:allowParallelSyncs="true" /> 

Beachten Sie, dass im Falle des Kontotyp "com.google", Die Synchronisationsadapter werden sogar von verschiedenen Anwendungen (Google Drive, Google Docs, Google Tabellen und Google Chrome) bereitgestellt , Google Mail, Kalender usw.).

+1

Danke, ich versucht hatte, das vor, aber Ihre Antwort führte mich Ihnen eine andere contentAuthority für jeden SyncAdapter mußten feststellen, das mir die problem- dort zeigte müssen mehrere ContentProvider sein, von denen jeder für die contentAuthority registriert ist, die in der SyncAdapter XML-Datei angegeben ist Vielen Dank! –

+0

Wie kann ich Label wie auf Bild in Frage? – waldemar

2

Ich möchte nur das Hauptattribut hinzufügen, das den Synchronisierungstyp unter Kontenmenü zu der obigen Antwort sichtbar macht.

„android: userVisible =“ true“

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:contentAuthority="foo" 
    android:accountType="com.example" 
    android:allowParallelSyncs="true" 
    android:userVisible="true"/> // this line does the job of showing up.