使用SyncAdapter与* local * gmail和facebook应用程序数据同步

对于需要开发的应用程序,我需要使用SyncAdapter同步Gmail和Facebook数据。 我希望与当地的Facebook和Gmail应用程序(如果可用),而不是他们的远程服务器同步。 与本地应用程序同步将意味着更less的电池使用,更less的networking使用,更快的同步等。当然,如果需要,我将设置正确的权限。

我的问题

  • 如果有任何应用程序(gmail / facebook)可用,是否可以查询他们的数据(消息,事件等)?
  • 如果没有,是否有可能从他们那里获得身份validation令牌(或任何types的凭据),这将允许我查询服务器,而无需用户再次input每个用户名和密码?
  • 如果可能的话,是否也可以在facebook或gmail应用程序同步之后立即自动同步,这样我就可以立即得到新的数据?

如果这些都不可用,我想我将需要自己提取数据,所以这与这个问题无关。

Related of "使用SyncAdapter与* local * gmail和facebook应用程序数据同步"

我不能为Facebook发言,但GMail应用程序不允许这样做。 以前它曾经工作过,但之后他们已经确保它只有Google应用程序可以查询电子邮件内容提供者。 您可以做的最好的方法是使用标签API获取消息的数量。 您可以使用标准Android AccountManager为Google服务获取身份validation令牌(ClientLogin或OAuth2)。 您将不得不使用它连接到特定的API来获取实际的数据。

啊,现在我已经更好地理解你的问题了。 我不认为有任何方法直接从应用程序的本地副本获取您感兴趣的数据。 这是一个有趣的想法,对于您build议的速度/空间/带宽的原因是合理的,但是需要来自当前不可用的应用程序的重要支持。

尽pipe应用程序确实支持共享本地数据,但试图避免用户重新input密码也几乎是不可能的。 毕竟,GMail应用程序如何validation您的应用程序是否应该有权读取其所有数据? 大概通过提示您的GMail用户名和密码。 仅仅使用同一个设备并不意味着完全的信任。

如示例项目中所示,使用SyncAdapter并存储身份validation令牌,您应该能够限制用户input一次凭据,但这是您将能够做到的最好的。


先前:

你有没有看过SDK附带的SampleSyncAdapter?

这些说明简要介绍了如何访问样品。

如果你使用Eclipse,那么他们在那里build议其实更容易。 要获得示例项目:

  1. selectFile > New > Other...
  2. selectAndroid > Android Sample Project
  3. select哪个目标/ API级别适用于您的项目(可能是最新的)
  4. 在这种情况下,select您感兴趣的示例项目SampleSyncAdapter

示例项目是如何使用SyncAdapter的一个很好的例子,应该很容易适应连接GMail,Facebook等。