Estoy tratando de obtener un ContentProvider personalizado para que se muestre bajo la sincronización con los datos &, y tengo algunos problemas. A saber, no aparece.ContentProvider no se mostrará en el área de Datos y Sincronización
Los detalles:
Mi AndroidManifest.xml tiene el proveedor y el servicio:
<provider android:name="BooksProvider"
android:label="ClientName Books"
android:authorities="com.clientname.reader.books"
android:enabled="true"
android:exported="true"
android:syncable="true">
<grant-uri-permission android:pathPattern=".*" />
</provider>
<service android:name=".sync.SyncService"
android:exported="true" android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data android:name="android.content.SyncAdapater"
android:resource="@xml/syncadapter" />
</service>
Y res/xml/syncadapter.xml tiene las siguientes:
<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="com.clientname.reader.books"
android:accountType="com.google"
android:supportsUploading="true"
android:userVisible="true"
/>
Sólo para estar seguro, incluso he llamado lo siguiente en Crear:
AccountManager accountManager = AccountManager.get(getApplicationContext());
Account[] accounts = accountManager.getAccountsByType("com.google");
for(Account account : accounts){
Log.d(TAG, "Account: " + account.name);
ContentResolver.setIsSyncable(account, Reader.AUTHORITY, 1);
}
Cuando cargo la Actividad, obtengo el registro de adb de ContentResolver.setIsSyncable diciendo que la cuenta ya está configurada para ser sincronizable, por lo que el método no está haciendo nada.
Y, sin embargo, el proveedor se niega a aparecer en Ajustes> Cuentas & sincronización> Datos & sincronización. Alguna idea sobre por qué? ¿Alguien sabe cómo está determinado lo que aparece en esa sección?
[editar] Algunos más información:
Después de pasar horas de depuración, ya voy a través de este error:
04-11 10:46:02.370: DEBUG/SyncManager(105): can't find a sync adapter for SyncAdapterType Key {name=com.clientname.reader.books, type=com.google}, removing settings for it
También aparece mi clase SyncService está en realidad nunca recibiendo llamadas. ¿Se supone que debo invocarlo yo mismo? Ninguna de las muestras que he visto o las aplicaciones en la naturaleza lo invocan ellas mismas, pero también todas tienen componentes de autenticación. ¿Pensamientos?
Los errores tipográficos son los errores de programación más molestos y frustrantes de la historia. – petersaints
Incluso con su respuesta, no veo lo que estaba mal. ¿Puedes hacerlo explícito? – rds
android.content.SyncAdapater debe ser android.content.SyncAdapter – Paddy