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

android - ContentProvider 不会出现在数据和同步区域

我正在尝试让自定义 ContentProvider 显示在数据和同步下,但遇到了一些问题。也就是说,它没有出现。

具体情况:

我的 AndroidManifest.xml 有提供者和服务:

res/xml/syncadapter.xml 有以下内容:

为了安全起见,我什至在 onCreate 上调用了以下代码:

当我加载 Activity 时,我从 ContentResolver.setIsSyncable 获得 adb 日志记录,说该帐户已设置为可同步,因此该方法没有执行任何操作。

然而,提供商拒绝出现在设置 > 帐户和同步 > 数据和同步中。关于为什么的任何想法?有谁知道它是如何确定该部分中出现的内容的?

[编辑] 更多信息:

花了几个小时调试后,我遇到了这个错误:

看来我的 SyncService 类实际上从未被调用过。我应该自己调用它吗?我见过的任何示例或野外应用程序都没有自己调用它,但它们也都具有身份验证组件。想法?

0 投票
1 回答
1075 浏览

android - 读取内容提供者标签时出错

所以,我尝试基于我的内容提供者和服务器的 SyncAdapter 来实现同步。似乎一切都创建和初始化得很好,我可以在 Accounts&Sync 中看到我的帐户,还可以看到同步我的内容提供商的复选框。

但是我在 LogCat 中遇到了奇怪的错误:

错误/AccountSettings(130):提供者需要权限标签“com.opussync.model.db.opuscontentprovider”

但我肯定已经在清单中设置了这个标签!

这就是为什么我认为当我尝试检查我帐户的数据和同步中的同步复选框时,我会收到一条消息:

同步当前遇到问题。它很快就会回来

这是我的清单的主要部分:

0 投票
2 回答
3147 浏览

android - 如何向 Android SyncManager 发出同步完成信号?

我在我的 SyncAdapter 中使用 cancelRequest(),就在它退出它的线程之前,但我后来决定它只打算由另一个想要取消正在进行的同步的实体 (UI) 使用(花费太长时间,哎呀, ETC。)

现在我的同步认为总是有一个待处理的请求——我用它来忽略新的请求。

我要做的另一件事是服务中的侦听器线程,它正在侦听对ContactsContract.AUTHORITY的更改,因此它可以启动我的聚合同步。

更新:此侦听器线程正在泄漏。完成后我会发出 .stop() ,但是,我认为有一个处理程序可以保持活动状态并防止服务停止。

我想将 SyncResults 发送到某个实体(即 SyncManager),该实体跟踪此类事物以进行挂起、回收等。

我错过了什么?

0 投票
1 回答
400 浏览

android - 将联系人姓名同步到日历事件描述的最佳方法是什么

我的应用程序创建日历事件,其中事件的描述中有一个联系人姓名。当用户使用电话的联系人更改联系人姓名时,我希望更改流向日历事件的描述字段。

最好的方法是什么?

我可以想到两个选择。两者都包括我自己的数据库中的联系人姓名的副本。当发生更改时,查找记录更改的记录并更新日历事件。

问题是如何有效地将新名称移动到我的数据库中。

  1. 在联系人上注册内容观察员并比较所有联系人姓名。
  2. 使用同步适配器

哪种方法真的更有效?

我不熟悉同步适配器,但我假设适配器不需要帐户(有这样的事情吗?),我希望更改立即流动(即不是在下一次预定同步时)

任何帮助,包括完全不同的方向,将不胜感激。

0 投票
1 回答
2356 浏览

android - 不使用 ContentProvider 的自定义 SyncAdapter

我想创建自己的 SyncAdapter,它将我的应用程序中的信息与某个服务器同步。问题是 - 我希望同步本身从我自己的应用程序的上下文中运行,使用我自己与数据库的连接,而无需使用 ContentProvider 访问我的数据库。

那可能吗?

谢谢,

乌迪

0 投票
1 回答
603 浏览

android - 使用同步适配器来维护传入的提要

我找不到这方面的具体示例,尽管这似乎是一条相当完善的路径,也是同步适配器的主要用途之一。我已经实现了大部分,但仍有一些问题需要解决。这是我现在的基本策略

执行同步

  • 找出本地存储的最后一项
  • 如果没有本地项目,则将新项目拉到某个最大大小
  • 如果有本地项目,拉新项目直到到达本地项目
  • 删除超过最大项目大小的项目

我有一个带有内容观察器的列表适配器,它应该反映同步的信息。

问题: 如果所有这些都是合理的,我目前的困境是如何从数据库中删除项目。我假设在使用内容时我应该避免任何删除,但是在我的同步适配器中,我如何知道当前是否正在观察数据?(观察者的静态地图?)

补充: 除此之外,我希望有一些这样的例子,这样我就可以预见到其他问题。我知道 google IO 演讲,它有一些很棒的高级哲学,但细节会为许多非专家开发者创造奇迹。

我认为这是一个非常有价值的功能,所有 Android 拥护者都希望完成并且做得正确,因为同步适配器提供了 Android 最令人向往的功能之一,并且只能帮助增加用户群,帮助我们所有人.

0 投票
1 回答
1644 浏览

android - 如何为谷歌日历构建同步适配器?

我正在为学生构建一个应用程序来管理大学的课程。

现在我想将事件(事件有日期和时间以及简短描述)与 Android 的谷歌日历同步。

我查看了 Android 示例中的 samplesync 适配器,但我没有发现它对日历很有用。

应使用复选框从应用程序的设置中启用和禁用应用程序的同步。

有没有人有一些有用的示例代码?

0 投票
1 回答
603 浏览

android - 自定义联系人的在线状态会在短时间内消失

我自己制作了SyncAdatper将我的应用程序的联系人添加到手机上的联系人。现在一切正常(图片、状态、自定义操作等),除了存在状态。

根据谷歌:

由于存在状态本质上是易变的,因此内容提供者可以选择不将该字段存储在长期存储中。

所以,我不知道如何一直保持联系人的存在。更新光标内部存在的代码是

绿点出现,但如果我离开联系人屏幕并在短时间内(秒)返回,“有时”绿点不再存在。

我能做些什么来解决这个问题吗?

0 投票
1 回答
8388 浏览

android - 内容提供程序中的 SQLite“数据库架构已更改”错误

我正在使用Content ProvidersandSync Adapters用于我的同步例程。

我的例程收到一个JSONObject并插入或更新条目。

为了决定我们是否要更新或插入,我们检查该条目是否存在于数据库中。这是发生 sqlite 错误的地方。

我做了一些研究,发现了关于这个主题的讨论。从这个讨论中,我明白sqlite_exec()必须调用它。我将如何在内容提供者中实现这一点?

编辑

插入/更新检查

内容提供者::更新

0 投票
1 回答
1986 浏览

android - 将 Account 添加到 AccountManager 后立即开始同步?

我在AccountManager中有十几个帐户,当添加新帐户时,Android 开始同步所有帐户。由于它们很多,至少需要 15 秒才能开始同步。

当我添加新帐户时,有什么方法可以停止/取消所有帐户的同步,这样我就可以ContentResolver.requestSync在那个时候调用并开始只同步我的帐户?

谢谢,

亚历山大·伊利奇。