SyncAdapter sin ContentProvider
-
09-10-2019 - |
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.
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