问题标签 [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 投票
9 回答
207496 浏览

android - 在 Android App 和网络服务器之间同步数据

我想在 Android 应用程序和服务器之间同步数据(例如数据库记录、媒体)。如果你看过Evernote或类似的应用程序,你肯定明白我的意思。

我有一些问题(假设我们要同步数据库记录):

  1. 每个用户都有自己的服务器空间的一部分(例如EvernoteDropbox)。也许用户通过手机创建新记录并在服务器中创建新记录。我怎样才能将这些记录匹配在一起?如果有相同 ID 的记录你建议我什么算法?

  2. 除了JSON还有什么方法可以在手机设备和服务器之间发送数据?

  3. 如果SyncAdapterContentProvider可以解决我的问题,请为我解释清楚。(如果您可以向我提供一些示例或教程,或者任何有助于扩大/指导我的搜索的建议或关键字也将不胜感激)。

0 投票
4 回答
2864 浏览

android - SyncAdapter 不会自动同步

我了解自动同步会在内容修改后 30 秒发生。观察 logcat 的时间更长,这证明自动同步没有发生。至少,不适用于我的自定义 SyncAdapter。

用户提供者:

用户同步适配器:

启动器:

我错过了什么吗?或者谁能​​给我更多关于这个主题的信息来帮助我的搜索?

0 投票
3 回答
2412 浏览

android - 没有帐户时,Android Authenticator 启动登录屏幕

我已经构建了一个 Authenticator,我已经构建了一个 SyncAdapter(两者都可以通过模拟器上的设置手动执行)。

如果未找到帐户,如何在应用程序启动时让我的应用程序启动登录屏幕(addAccount 方法)?

这是我的 Manifest.xml ......

0 投票
1 回答
1026 浏览

android - 制作 2 路接触式同步适配器

你好亲爱的Stackoverflowers!

我在 Android 2.3.3 的 CardDAV 同步源上工作,但我不明白一个想法。我仔细阅读了有关 samplesyncadaptater 的文档,该文档仅适用于从远程服务器读取联系人。
但在我的情况下,我正在尝试添加一个源,既可以从服务器读取联系人,也可以将联系人写入服务器。

此时:
- 当您要在 Android 中添加同步源时,会出现我的项目。
- 我可以参数化我的来源和身份验证工作
- 当我转到联系人应用程序并转到帐户可见性选项时(菜单名称取决于您的手机 rom)我可以选择我的来源以显示其联系人
- 但是当我尝试创建联系人时,只提供了我的gmail和outlook源码。也许我错过了我需要的各种 xml 文件中的某些内容。

请帮我把我不同的xml文件...

这是Manifest.xml

这是syncadaptater.xml

最后是authenticationator.xml

0 投票
1 回答
986 浏览

android - Android 同步适配器 - 在某些设备上不显示联系人同步

在一个学校项目中,我实现了一个工作同步适配器,用于将联系人与我的应用程序同步。我已经在模拟器和 Android 4.0.3 上的 HTC Evo 3D 上尝试过它,它可以工作。

但在某些设备(HTC Hero 4.0.3 和 Xperia X10 2.3.7)上,当我为我的应用添加帐户时,该帐户不显示同步联系人行。我在那些未授予 logCat WRITE_SECURE_SETTINGS 的设备上看到。

与此同时,我看到市场应用程序(不是系统应用程序,例如:Hotmail)可以拥有一个我无法拥有的具有相同联系线路的帐户。

他们是怎么做到的?我能做些什么呢?

我只需要一个快速的答案,截止日期非常接近。

0 投票
4 回答
14146 浏览

android - Android SyncAdapter 自动初始化同步

我有一个SyncAdapter我的应用程序,以及一个AccountManager将我的应用程序帐户添加到 Android 帐户管理器。当我将帐户添加到客户经理时,我的代码如下所示:

我可以通过设置成功将帐户添加到帐户管理器,但我还必须在设置中手动为帐户启用同步,即使在模拟器上启用了后台数据和自动同步设置。如果我手动启用同步,则同步执行良好,只是默认情况下不会启动。

0 投票
1 回答
2937 浏览

android - 使用 AbstractThreadedSyncAdapter 同步 Android 数据库:不调用 onPerformSync

我正在尝试使用 AbstractThreadedSyncAdapter 将我的本地数据库与我的服务器同步。我遵循了我找到的指南,但我无法让它工作。它适用于 Android 2.2。

我的身份验证器系统正常工作。在我的 AccountAuthenticatorActivity 中,创建帐户后,我执行以下操作:

我创建了我的 SyncService 并在我的清单中声明了它。一些功能:

然后我实现了我的 SyncAdapter。onPerformSync 函数是空的,我只是想知道它是否被调用,它从来没有被调用过。

我的 xml/sync_adapter.xml 有以下代码:

这是清单的服务部分:

我什至创建了自己的 ContentProvider(函数是空的,它们只是写在日志中),因为我遵循的指南说它是必需的,我也在清单中声明了它,但是没有调用任何函数。

有人知道为什么我的 onPerformSync 函数没有被调用吗?我的 SweetSyncService 的 onBind 函数被调用,它创建了我的 SweetSyncAdapter,但我的日志从这里开始没有显示任何消息。

感谢阅读,我知道我输入了很多代码,但我已经研究了一段时间,但我无法修复它。

0 投票
2 回答
3391 浏览

android - 如何处理 REST 调用、数据持久性、同步和观察 ContentProvider

我知道这个问题被问过太多次了,但我认为我试图针对的问题有点不同,可能更复杂。

我将开发一个使用RESTful Web Service的应用程序,并且需要满足以下要求:

  • 该应用程序应在列表中详细显示一些书籍、作者和编辑

  • 该应用程序还应该允许搜索一本书

  • 书籍、作者和编辑从 RESTful Web 服务中获取

  • 每个实体都必须被缓存,这样当我打开一个活动时,我首先会看到旧数据(如果有的话),而新数据则从网络更新。

  • 每次实体更新时,都应通知相关方(ContentObserver?定期Listener实施?)

  • 如果调用已经在执行(比如 toapi/books/1337或 to api/editors),则应该通知调用者它正在加载数据,并且应该给予旧的调用者(如果存在),就好像它是原始调用者一样。

  • 一些数据(只有书籍和作者)应该每 N 分钟更新一次(由用户决定),并且应该通知观察者(SyncAdapter?)

问题

在观看并研究了 Virgil Dobjanschi 在 Google I/O 2010 上提出的所有组件之后,我的疑惑是:

  1. 如何透明地处理任何调用者的“实体正在更新”概念?我应该ContentObserverContentProvider我必须实施的情况下使用吗?

  2. 如果我使用 aContentObserver我可以轻松地为单个实体设置状态标志(如 Dobjanschi 所建议的那样),例如UPDATINGINSERTING等。但是我应该如何处理列表?假设我想要一个书籍清单,我应该把状态标志放在哪里?我应该将它放在仅用于列表的状态表中吗?如果是这样,我应该观察两个Cursors,一个用于状态,一个用于实际列表(即 table/Content URI)。如果我要求的实体不存在(还)或者 REST 调用返回一个404? 如何处理回调?

  3. 如果我将所有 REST 方法放在一个 中**SyncAdapter**,我可以“强制”SyncAdapter从网络更新实体/实体列表(并因此将其放入正确的表中)吗?这样,状态标志将很有用。

  4. 可以SyncAdapter多个实体上工作(实际上是实体列表,因为我想不时更新书籍和编辑器),因为它只有一个performSync方法?

  5. 如果SyncAdapter用户在设备设置中禁用了我的实现,它将不会更新任何内容(这很好)。但是,如果用户在 Activity 中单击“更新书籍”按钮,我仍然可以调用该performSync方法,还是它也会被禁用?

0 投票
3 回答
4457 浏览

android - 当 AccountManager 删除帐户时,SyncAdapter 会收到通知吗?

因此,我重申的问题是,当您转到“设置”->“帐户和同步”并选择创建的SyncAdapter与云服务器同步的帐户,然后选择“删除帐户”时,就您SyncAdapter而言会发生什么?将显示一个对话框,要求您确认,并且与该帐户关联的手机上的数据将被删除。我不能轻易相信该框架可以自动删除我SyncAdapter存储在本地数据库中的数据,但这似乎意味着删除帐户将(我同意应该)删除该数据。是否有我的补充可以SyncAdapter作为帐户删除的回调来处理从本地数据库中删除所有适当的数据?也许它必须通过AccountManager反而; 当帐户被删除时我AccountManager会收到通知,并且我可以从那里触发数据删除而无需SyncAdapter.

SyncAdapter编辑:在相关说明中,同步管理器是否在添加新帐户时为它同步的每个帐户调用我?添加帐户时,我看到onPerformSync(...)先前添加的帐户以及刚刚添加的帐户正在执行,并希望停止该操作。

0 投票
2 回答
1888 浏览

android - 每分钟同步帐户

在我的以下行AccountAuthenticatorActivity之后,我尝试为帐户设置同步选项:addAccountExplicitly

syncFrequencySeconds设置为 86400(每 24 小时)。但是我的同步适配器仍然每分钟触发一次。我究竟做错了什么?(同步本身没有任何问题)