Domanda

Voglio realizzare uno SyncAdapter per un contenuto che voglio per la sincronizzazione con un server. Sembra che per fare ciò, è necessario un ContentProvider registrato per l'autorità si specifica nel file di proprietà SyncAdapter XML.

Come io non voglio questo contenuto sia accessibile al resto del telefono, non ho implementato il mio ContentProvider e utilizzata un'implementazione di personale per memorizzare questo contenuto.

Sai se è possibile fornire una sincronizzazione utilizzando uno SyncAdapter senza fornire una ContentProvider?

La ringrazio molto.

È stato utile?

Soluzione

Si deve sempre specificare un fornitore di contenuti in sede di attuazione di uno SyncAdapter, ma questo non vuol dire che ha effettivamente a fare qualsiasi cosa.

ho scritto SyncAdapters che creano i conti e si integrano con il "Account e sincronizzazione" quadro in Android che non necessariamente conservare il loro contenuto in un fornitore di standard.

Nel vostro 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" />

Nel vostro manifesto:

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

E poi aggiungere un provider fittizio che non fa nulla di utile, tranne esiste, 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;
    }
}

Altri suggerimenti

Ora, anche la documentazione ufficiale da parte di Google suggeriscono che si utilizza uno stub (fittizio) ContentProvider.

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

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top