Я пытаюсь реализовать шаблон адаптера Content-Provider-Sync, как обсуждалось в Google IO - слайд 26. Мой контент-провайдер работает, и моя синхронизация работает, когда я запускаю ее из приложения Dev Tools Sync Tester, однако, когда я вызываю ContentResolver.requestSync(учетную запись, полномочия, пакет) из моего ContentProvider, моя синхронизация никогда не запускается.
ContentResolver.requestSync(
account,
AUTHORITY,
new Bundle());
Изменить - добавлен фрагмент манифеста Мой манифест xml содержит:
<service
android:name=".sync.SyncService"
android:exported="true">
<intent-filter>
<action
android:name="android.content.SyncAdapter" />
</intent-filter>
<meta-data android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>
- Изменить
Мой файл syncadapter.xml, связанный с моей службой синхронизации, содержит:
<?xml version="1.0" encoding="utf-8"?>
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="AUTHORITY"
android:accountType="myaccounttype"
android:supportsUploading="true"
/>
Не знаю, какой другой код будет полезен. Учетная запись, переданная requestSync, имеет значение "myaccounttype", а AUTHORITY, переданный вызову, соответствует моему syc-адаптеру xml.
Является ли ContentResolver.requestSync правильным способом запросить синхронизацию? Похоже, что инструмент тестера синхронизации привязывается непосредственно к сервису и вызывает синхронизацию запуска, но похоже, что он побеждает цель интеграции с архитектурой синхронизации.
Если это правильный способ запросить синхронизацию, то зачем нужен тестер синхронизации, но не мой вызов ContentResolver.requestSync? Есть что-то, что мне нужно передать в комплекте?
Я тестирую эмулятор на устройствах с версиями 2.1 и 2.2.