#android #android-contentprovider #android-syncadapter
#Android #android-contentprovider #android-синхронизация
Вопрос:
Итак, я пытаюсь реализовать синхронизацию на основе SyncAdapter моего поставщика контента и сервера. Кажется, все создано и инициализировано хорошо, и я вижу свою учетную запись в разделе Учетные записи и синхронизация, а также вижу флажок для синхронизации моего поставщика контента.
Но я получил странную ошибку в LogCat:
ОШИБКА / Настройки учетных записей (130): провайдеру требуется метка для авторизации ‘com.opussync.model.db.opuscontentprovider’
Но я точно установил эту метку в манифесте!
И вот почему я думаю, что когда я пытаюсь установить флажок синхронизации в Data amp; Синхронизация моей учетной записи, я получаю сообщение:
В настоящее время возникают проблемы с синхронизацией. Он скоро вернется
Вот основные части моего манифеста:
<!-- CONTENT PROVIDER -->
<provider
android:name=".model.db.OpusContentProvider"
android:label="BLABLABLA"
android:authorities=".model.db.opuscontentprovider"
></provider>
<!-- SERVICES -->
<service android:name=".service.OpusAccountsSyncService" android:exported="true" android:process=":zencoosync">
<intent-filter >
<action android:name = "android.accounts.AccountAuthenticator"/>
</intent-filter>
<meta-data android:name="android.accounts.AccountAuthenticator"
android:resource="@xml/authenticator" />
</service>
<service
android:name=".model.syncadapter.SyncService"
android:exported="true"
android:syncable="true"
>
<intent-filter>
<action android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data
android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
Ответ №1:
Имя пакета не добавляется автоматически в android:authorities
.
Итак, либо
- измените
android:authorities=".model.db.opuscontentprovider"
наandroid:authorities="com.opussync.model.db.opuscontentprovider"
или - используйте
content://.model.db.opuscontentprovider
в качестве базового URL для поставщика контента в коде.