9

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

我的问题

  • 如果有任何应用程序(gmail/facebook)可用,是否可以向它们查询数据(消息、事件等)?
  • 如果没有,是否可以从他们那里获得身份验证令牌(或任何类型的凭据),这将允许我查询服务器而无需用户再次输入每个人的用户名和密码?
  • 如果可能的话,是否也可以在 facebook 或 gmail 应用程序同步后立即自动同步,以便我尽快获得新数据?

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

4

2 回答 2

3

我不能代表 Facebook,但 GMail 应用程序不允许这样做。它以前可以工作,但他们已经保护了它,以便只有 Google 应用程序可以查询电子邮件内容提供商。您能做的最好的事情是使用标签 API获取消息的数量。您可以使用标准 Android 获取 Google 服务的身份验证令牌(ClientLogin 或 OAuth2)AccountManager。然后,您必须使用它连接到特定的 API 以获取实际数据。

于 2012-08-03T06:47:18.620 回答
2

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

即使应用程序确实支持共享本地数据,试图避免用户重新输入密码也几乎肯定是不可能的。毕竟,GMail 应用程序将如何验证您的应用程序是否应该有权读取其所有数据?大概是通过提示您输入 GMail 用户名和密码。仅仅在同一个设备上绝对不意味着完全信任。

如示例项目中所示,使用 SyncAdapter 并存储身份验证令牌,您应该能够限制用户输入他们的凭据一次,但这是您能做的最好的事情。


之前:

您看过 SDK 中包含的 SampleSyncAdapter 吗?

这些说明快速概述了如何访问示例。

如果您使用的是 Eclipse,那么它实际上比他们建议的更容易。获取示例项目:

  1. 选择File> New>Other...
  2. 选择Android>Android Sample Project
  3. 选择适用于您的项目的目标/API 级别(可能是最新的)
  4. 选择您感兴趣的示例项目,本例中为 SampleSyncAdapter

示例项目是如何使用 SyncAdapters 的一个很好的示例,并且应该很容易适应与 GMail、Facebook 等的连接。

于 2012-07-27T01:33:00.823 回答