如何正确设置syncAdapter?

时间:2012-07-25 09:43:52

标签: android synchronization android-contentprovider android-syncadapter

我是使用syncAdapter的新手。我已经看过google IO video(演讲稿here),我已经阅读了2篇有关它的教程(herehere)。

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

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

我成功地允许添加同步帐户并使用其图标显示它。

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

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

  2. 添加帐户后,最终用户可以看到该帐户的奇怪描述:“res / xml / authenticator.xml”。不确定它的设置位置。

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

  4. 我不需要进行真正的授权,所以我只是在从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();
    

    我还尝试使用描述here的内容设置自动同步并启用同步。

1 个答案:

答案 0 :(得分:0)

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

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