ContentProvider не отображается в области «Данные и синхронизация»

Я пытаюсь заставить настраиваемый ContentProvider отображаться в разделе «Данные и синхронизация», и у меня возникают некоторые проблемы. А именно, он не отображается.

Особенности:

В моем AndroidManifest.xml указаны поставщик и служба:

<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>

А в файле res / xml / syncadapter.xml указано следующее:

<?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"
/>

На всякий случай, я Я даже позвонил в onCreate:

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);
}

Когда я загружаю Activity, я получаю журнал adb от ContentResolver.setIsSyncable, в котором говорится, что учетная запись уже настроена для синхронизации, так что метод ничего не делает.

И все же провайдер отказывается отображать в Настройках> Учетные записи и синхронизация> Данные и синхронизация. Есть идеи почему? Кто-нибудь знает, как определяется, что появляется в этом разделе?

[edit] Дополнительная информация:

После нескольких часов отладки я столкнулся с этой ошибкой:

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

Похоже, мой класс SyncService никогда не вызывается. Должен ли я сам вызывать его? Ни один из примеров, которые я видел, или приложений в дикой природе не вызывает его самостоятельно, но все они также имеют компоненты аутентификации. Мысли?

5
задан Paddy 11 April 2011 в 14:50
поделиться