que - sync data android
SyncAdapter sin un ContentProvider (2)
Quiero implementar SyncAdapter para un contenido que quiero sincronizar con un servidor. Parece que para hacerlo, necesita un ContentProvider registrado para la autoridad que especifique en el archivo de propiedades XML de SyncAdapter.
Como no quiero que este contenido sea accesible para el resto del teléfono, no he implementado mi propio ContentProvider y utilicé una implementación personal para almacenar este contenido.
¿Sabes si es posible proporcionar una sincronización usando SyncAdapter sin proporcionar un ContentProvider?
Muchas gracias.
Ahora, incluso la documentación oficial de Google sugiere que uses un stub (ficticio) ContentProvider
.
https://developer.android.com/training/sync-adapters/index.html
Siempre debe especificar un proveedor de contenido al implementar un SyncAdapter, pero eso no quiere decir que realmente tenga que hacer nada.
He escrito SyncAdapters que crean cuentas e integran con el marco de "Cuentas y sincronización" en Android que no necesariamente almacenan su contenido en un proveedor estándar.
En su 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 tu manifiesto:
<provider android:name="DummyProvider"
android:authorities="com.company.content"
android:syncable="true"
android:label="DummyProvider" />
Y luego agrega 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;
}
}