使用google帐户的Android SyncAdapter

使用google帐户的Android SyncAdapter,android,authentication,Android,Authentication,我已经编写了一个SyncAdapter,它接受一个“com.google”帐户,并与appengine web服务进行同步。使用dev tools sync tester(在仿真器上)测试这一点,这个同步看起来工作得很好 问题是,默认情况下它不同步。进入“accounts&sync”中的帐户会显示我的谷歌帐户为空,就好像没有可用的同步服务一样 我怀疑,为了让我的同步显示在“accounts&sync”菜单中,我需要实现我自己的AccountAuthenticator,这与我认为google的Ac

我已经编写了一个SyncAdapter,它接受一个“com.google”帐户,并与appengine web服务进行同步。使用dev tools sync tester(在仿真器上)测试这一点,这个同步看起来工作得很好

问题是,默认情况下它不同步。进入“accounts&sync”中的帐户会显示我的谷歌帐户为空,就好像没有可用的同步服务一样

我怀疑,为了让我的同步显示在“accounts&sync”菜单中,我需要实现我自己的AccountAuthenticator,这与我认为google的AccountAuthenticator必须已经做的事情完全相同。这不是一份令人兴奋的工作,而且似乎没有必要。因此:

  • 有没有办法在“accounts&sync”菜单中添加使用我的SyncAdapter但依赖google帐户的条目?或者在google帐户中添加一个子菜单来同步我的appengine服务
如果没有,

  • 有没有一种方法可以在我编写的AccountAuthenticator中重复使用google的AccountAuthenticator

因此,您可以使用一个使用“com.google”帐户的syncAdapter,但这需要您编写一个匹配的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>

将account作为您要用于同步凭据的account对象。

将setIsSyncable方法放在哪个类下?@mikedroid:我认为可以随时从任何地方调用该方法。如果找不到任何可同步的google帐户(如ContentResolver.getIsSyncable所示),我会在程序加载时调用它一次。您正在使用什么权限?另外,您的in-AndroidManifest.xml:块似乎丢失了?@Paddy:感谢您指出丢失的xml-它总是在答案中,只是因为缩进不够而从未显示-哎呀!关于权限,我的完整清单文件可以在这里找到:-我很抱歉,已经有一段时间了,我记不起哪一个与此相关。@gfxmonk谢谢您提供的信息!我的问题是打字错误。因为我是那样的白痴。
<?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"
/>
ContentResolver.setIsSyncable(account, "net.gfxmonk.android.pagefeed", 1)