Android SyncAdapter с помощью учетной записи Google

Я записал SyncAdapter, который уделяет внимание "com.google" и выполняет синхронизацию с appengine веб-сервисом. Тестирование этого с dev инструментами синхронизирует тестер (на эмуляторе), эта синхронизация, кажется, работает просто великолепно.

Проблема, она не синхронизирует по умолчанию. И движение к учетной записи в "учетных записях и синхронизации" показывает мою учетную запись Google, чтобы быть пробелом - как будто нет никаких синхронизирующих доступных сервисов.

Я подозреваю, что для показывания моей синхронизации в "учетных записях и синхронизирующем" меню, я должен был бы реализовать свой собственный AccountAuthenticator, который сделает точно то же самое как, что я предполагаю, что AccountAuthenticator Google должен уже сделать. Это не захватывающее задание, и это кажется очень ненужным. Так:

  • существует ли способ добавить запись в "учетные записи и синхронизирующее" меню, которое использует мой SyncAdapter, но полагается на учетную запись Google? или добавить подменю для поиска с помощью Google учетных записей, который включает синхронизацию моего appengine сервиса?

в противном случае

  • существует ли способ, которым я могу снова использовать AccountAuthenticator Google из AccountAuthenticator, который я пишу?
20
задан gfxmonk 31 May 2010 в 11:42
поделиться

1 ответ

Получается, что вы можете иметь 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)

с учетной записью в качестве объекта учетной записи, который вы хотите использовать для своих учетных данных синхронизации.

23
ответ дан 30 November 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: