Question

Je veux mettre en œuvre un SyncAdapter pour un contenu que je veux synchroniser avec un serveur. Il semble que de le faire, vous avez besoin d'un ContentProvider enregistré pour l'autorité que vous spécifiez dans le fichier de propriétés XML SyncAdapter.

Comme je ne veux pas que ce contenu soit accessible au reste du téléphone, je ne l'ai pas mis en œuvre ma propre ContentProvider et utilisé une implémentation personnelle pour stocker ce contenu.

Savez-vous s'il est possible de fournir une synchronisation à l'aide d'un SyncAdapter sans fournir ContentProvider?

Merci beaucoup.

Était-ce utile?

La solution

Vous devez toujours spécifier un fournisseur de contenu lors de la mise en œuvre d'un SyncAdapter, mais cela ne veut pas dire qu'il a effectivement rien à faire.

J'ai écrit SyncAdapters qui créent des comptes et intègrent le cadre « Comptes et synchronisation » dans Android qui ne stocke pas nécessairement leur contenu dans un fournisseur standard.

Dans votre xml / syncadapter.xml:

<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android" 
    android:accountType="com.company.app"
    android:contentAuthority="com.company.content"
    android:supportsUploading="false" />

Dans votre manifeste:

<provider android:name="DummyProvider"
    android:authorities="com.company.content"
    android:syncable="true"
    android:label="DummyProvider" />   

Et puis ajoutez un fournisseur fictif qui ne fait pas quelque chose d'utile, sauf exist, DummyProvider.java:

public class DummyProvider extends ContentProvider {

    @Override
    public int delete(Uri uri, String selection, String[] selectionArgs) {
         return 0;
    }

    @Override
    public String getType(Uri uri) {
        return null;
    }

    @Override
    public Uri insert(Uri uri, ContentValues values) {
        return null;
    }

    @Override
    public boolean onCreate() {
        return false;
    }

    @Override
    public Cursor query(Uri uri, String[] projection, String selection,
                    String[] selectionArgs, String sortOrder) {
        return null;
    }

    @Override
    public int update(Uri uri, ContentValues values, String selection,
                    String[] selectionArgs) {
        return 0;
    }
}

Autres conseils

Maintenant, même la documentation officielle par Google suggère que vous utilisez un talon (factice) ContentProvider.

https://developer.android.com/training/sync-adapters/ index.html

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top