问题标签 [android-syncadapter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2162 浏览

android - Android 4.x:在联系人中获取自定义帐户类型列表

我正在尝试为 android 编写自己的同步适配器。我正在从 SDK 中挖掘 Sample Sync Adapter,但它没有记录在案。我可以让联系人出现在联系人应用程序中。但我无法编辑它们或创建新的。

很难找到有关如何在默认联系人应用程序中列出我自己的帐户类型以供创建或使其可编辑的任何信息。我不想添加任何已被 android 支持的自定义字段和数据。

任何人都可以向我提供有关如何将我的同步适配器集成到默认联系人应用程序(如交换同步)的教程或示例吗?

  • AndroidManifest.xml 需要添加什么
  • 需要在contacts.xml中添加什么
  • 需要在syncadapter.xml 中添加什么
  • 是否需要添加任何代码才能工作?

顺便说一句:
我不关心低于 ICS 的 android 版本。我到处读到 2.x 的联系人应用程序不支持此功能,但 3.x 及更高版本支持。2.x 不在讨论范围内,所以我正在寻找 ICS 方法来实现它。

提前致谢

0 投票
0 回答
575 浏览

android - RESTful Content Provider 是否应该使用 SyncAdapter?

我有一个自定义内容提供程序和同步适配器,它们工作正常,但我不清楚向服务器发起异步请求的最佳实践。例如,当客户端向内容提供者发出查询请求时,它会查询本地数据数据库——现在它需要检查服务器内容。

对于服务器请求,推荐使用这两种方式中的哪一种?

1)在内容提供者内部向服务器发起直接异步请求以获得更多内容,或者,如果我有一个同步适配器,2)在内容提供者内部创建一个 ContentResolver.requestSync(... 以间接实现这一点?

看起来(1)最终会实现(2),但我还没有遇到从内容提供程序中使用同步适配器的示例。UI 是通过光标适配器和观察者驱动的,因此对服务器同步是如何发生的有信心是非常有帮助的!

谢谢

0 投票
1 回答
1851 浏览

android - 使用 SyncAdapters 时登录两次

我正在创建一个新的 Android 应用程序SyncAdapter来处理数据库同步。我已经准备好一切,应用程序运行良好,但我注意到我登录了两次。

第一次登录发生在AuthenticatorActivity类(它扩展AccountAuthenticatorActivity)验证用户和密码时。

如果用户名和密码正确,AuthenticatorActivity则执行以下操作:

  • 如果account不存在,它会使用mAccountManager.addAccountExplicitly()
  • authToken保存使用intent.putExtra(AccountManager.KEY_AUTHTOKEN, authToken);

这基本上是从 Android 示例中复制/粘贴的,所以我想没关系。

问题是当SyncAdapter启动和使用

调用扩展类getAuthToken()内部的方法。在这个方法中,我再次点击登录端点。AuthenticatorAbstractAccountAuthenticator

从那时起,在authToken过期之前不会再次点击登录端点。

这不是让我很困扰的事情,但我想知道是否有办法避免登录两次。

0 投票
0 回答
267 浏览

android - SyncAdapter for Android 使用具有 NTLM 凭据的 WCF 服务

我正在尝试按照Dobjanschi的模式开发一个 rest-client-application 。

因此,我正在使用来自谷歌的示例“ samplesync ”,但我遇到的问题是我需要使用需要 NTLM 身份验证的 WCF 服务。

通过遵循链接中的模式,我已经成功地建立了与 Web 服务的连接

但正如我所说,我想遵循开发 Web 服务的模式,所以我的问题是如何将 ntlm-authentication 集成到谷歌的同步模型中?

我认为它必须设置在 AuthenticatorActivity 或 Authenticator 类中的某个位置,但我不知道在哪里以及如何做,以便建立一个正常工作的 SyncAdapter。

如果有人可以帮助我,我将不胜感激。

已经感谢您的时间和支持。

0 投票
1 回答
1442 浏览

android - 在 Android 应用程序中自动执行 ContentResolver.setMasterSync 是不好的做法还是粗鲁?

我在我的应用程序中广泛使用同步适配器来实现其核心功能。我还使用同步适配器提供的定期刷新。因此,如果手机上的“帐户和同步”被禁用,我的应用程序将毫无用处。执行 ContentResolver.setMasterSyncAutomatically(true) 来打开同步是否被认为是一种不好的做法或粗鲁。仅仅做一个 ContentResolver.setIsSyncable 并没有帮助,因为如果主帐户和同步被禁用,那么定期同步就不起作用。处理这种情况的常用方法是什么?

提前致谢,

-v-

0 投票
2 回答
1553 浏览

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

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

我的问题

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

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

0 投票
1 回答
563 浏览

android - SyncResult 字段用于同步之间的延迟

我正在研究 SyncAdapter 的实现。并且想知道 - 我们的 onPerformSync 方法中有一个 SyncResult 类型的参数。SyncResult 包含字段 - delayUntil。正如它在文档中所述 - 它用于同步之间的延迟。但是,当我调用 ContentResolver.requestSync - 它被忽略了。那么,有人知道如何正确使用它吗?

0 投票
1 回答
1537 浏览

android - 将手机联系人与应用同步

我想在我的应用程序中将电话联系人(姓名和电话号码)与我的 contentProviver“联系人”同步。所以我搜索并找到了两种方法:ContentOberver 和 SyncAdapter。

在我的情况下,我不需要与 Internt 连接,因此我只与我的应用程序的数据库同步。如果用户也删除了我想在我的数据库中删除的联系人,则更新或插入也是如此。

那么 ContentObserver 是这种情况下更好的方法吗?

有没有办法知道联系人的密钥?就像 db 中一行的键一样。如果是,我可以经常更新我的数据库(用户可以选择时间)。

0 投票
1 回答
376 浏览

android - 以用户定义的频率同步选定的帐户

我正在开发一个以用户定义的频率同步所选帐户的 android 应用程序。

应该在. authority_ 我必须为此编写一个同步适配器吗?extrasaddPeriodicSync()

0 投票
1 回答
3625 浏览

android - 如何正确设置同步适配器?

我是 syncAdapter 的新手。我已经观看了google IO 视频(此处的讲座演示),并且我已阅读了 2 个关于它的教程(此处此处)。

我还尝试了教程的代码,令人沮丧的是我无法弄清楚如何正确实现同步适配器。

我相信一些偏好(无论是在清单中还是在 xml 文件中)都是错误的,但我不知道为什么。

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

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

  1. 允许帐户同步。最终用户无法按下同步按钮。即使我在添加帐户时尝试添加这样的东西,它似乎也不会自动同步。

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

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

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

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