Pregunta

Quiero implementar un SyncAdapter un contenido que desea sincronizar con un servidor. Parece que para ello, se necesita un ContentProvider registrado para la autoridad que se especifica en el archivo de propiedades SyncAdapter XML.

Como no quiero que este contenido sea accesible para el resto del teléfono, no he aplicado mi propia ContentProvider y se utiliza una aplicación personal para almacenar este contenido.

¿Usted sabe si es posible proporcionar una sincronización utilizando un SyncAdapter sin proporcionar un ContentProvider?

Muchas gracias.

¿Fue útil?

Solución

Siempre se tiene que especificar un proveedor de contenido en la aplicación de un SyncAdapter, pero eso no quiere decir que en realidad tiene que hacer nada.

He SyncAdapters que crean cuentas y se integran con el marco "Cuentas y sincronización" en Android, que no necesariamente almacenar su contenido en un proveedor estándar escrito.

En el código 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" />

En el manifiesto:

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

Y a continuación, agregar un proveedor ficticio que no hace nada útil, excepto existir, 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;
    }
}

Otros consejos

Ahora, incluso la documentación oficial por parte de Google sugiere que utilice un ContentProvider (ficticio) trozo.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top