如何正确设置syncAdapter?

and*_*per 8 android synchronization android-contentprovider android-syncadapter

我是syncAdapter的新手.我已经观看了谷歌IO视频(这里的讲座演示),我已经阅读了2篇关于它的教程(这里这里).

我也试过了教程的代码,令人沮丧的是我无法弄清楚如何正确实现syncAdapter.

我认为有些偏好(在清单或xml文件中)都是错误的,但我找不到原因.

我成功地允许添加同步帐户并显示它的图标.

但是,我面临一些奇怪的问题,我无法弄清楚它们为什么会发生:

  1. 允许帐户同步.最终用户无法按下同步按钮.即使我在添加帐户时尝试添加此类内容,它似乎也不会自动同步.

  2. 添加帐户后,最终用户可以看到帐户的奇怪描述:"res/xml/authenticator.xml".不知道它的设置在哪里.

  3. 当点击帐户(添加后),我看到一个空列表(这是问题.如何在那里添加更多项目?将来,我还需要与facebook和gmail同步,但我不能成功将我自己的contentProvider添加到此列表中.

我不需要进行真正的授权,所以我只是在从AccountAuthenticatorActivity扩展的活动中使用下一个代码:

accountManager.addAccountExplicitly(account, PASSWORD, null);
final Intent intent = new Intent();
intent.putExtra(AccountManager.KEY_ACCOUNT_NAME, USERNAME);
intent.putExtra(AccountManager.KEY_ACCOUNT_TYPE, accountType);
setAccountAuthenticatorResult(intent.getExtras());
setResult(RESULT_OK, intent);
finish();
Run Code Online (Sandbox Code Playgroud)

我还尝试使用此处描述的内容设置自动同步并启用同步.

kin*_*ton 0

关于 1) 是的,如果没有互联网连接,您将无法同步。原因是(尽管同步适配器没有正确的定义)同步适配器是一个应该用于将骨干网与本地数据同步的组件。如果没有连接,则启动同步是没有意义的。实际上,这仅在理论上是正确的,因为即使没有主干数据库,我也必须开发一个 sybc 适配器。

我所做的是编写一个组件,该组件在触发时由同步适配器调用,并在需要同步时由我自己的应用程序调用,即使没有连接