Я записал SyncAdapter, который уделяет внимание "com.google" и выполняет синхронизацию с appengine веб-сервисом. Тестирование этого с dev инструментами синхронизирует тестер (на эмуляторе), эта синхронизация, кажется, работает просто великолепно.
Проблема, она не синхронизирует по умолчанию. И движение к учетной записи в "учетных записях и синхронизации" показывает мою учетную запись Google, чтобы быть пробелом - как будто нет никаких синхронизирующих доступных сервисов.
Я подозреваю, что для показывания моей синхронизации в "учетных записях и синхронизирующем" меню, я должен был бы реализовать свой собственный AccountAuthenticator, который сделает точно то же самое как, что я предполагаю, что AccountAuthenticator Google должен уже сделать. Это не захватывающее задание, и это кажется очень ненужным. Так:
в противном случае
Получается, что вы можете иметь syncAdapter, который использует учетную запись "com.google", но для этого нужно написать соответствующий ContentProvider. Например, в AndroidManifest.xml:
<service android:name=".sync.SyncAdapterService" android:exported="true" android:process=":contacts">
<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="net.gfxmonk.android.pagefeed"
android:accountType="com.google"
android:supportsUploading="false"
android:userVisible="true"
/>
Затем вы должны иметь ContentProvider с полномочиями "net.gfxmonk.android.pagefeed", чтобы android связал это действие синхронизации с вашим приложением. Как только у вас это появится (он даже не должен делать ничего значимого, просто существовать), ваша программа может появиться в панели настроек "Аккаунты и синхронизация" - в выбранном вами аккаунте google.
В качестве дополнительной работы вам может понадобиться вызов:
ContentResolver.setIsSyncable(account, "net.gfxmonk.android.pagefeed", 1)
с учетной записью в качестве объекта учетной записи, который вы хотите использовать для своих учетных данных синхронизации.