使用 SyncAdapter 同步联系人,工作

2024-03-30

我目前正在开发一个 android 项目,在该项目中我想将移动联系人同步到服务器,经过大量研究后SyncAdapter并在中创建帐户accountmanager,我自己学会了。但是有两件事我不明白,我在谷歌中搜索了这些内容但无法得到完美的答案。请不要重复这个问题,我想更清楚地知道它是如何工作的。

  1. 正如谷歌文档所说,每当同步完成时,联系人的脏标志就会改变。我的疑问是,当我以编程方式指定哪些联系人发送到服务器时,Android 操作系统将如何检测该特定联系人的同步状态?

例如:- 在下面的示例中,我想将捆绑包发送到服务器。

    Bundle extras = new Bundle();
      extras.putInt("contact name after filtering", "number after filtering");  
      ContentResolver.requestSync(account,ContactsContract.AUTHORITY, extras);

然后收到的捆绑额外内容onPerformSync方法并发送到服务器。

    @Override
public void onPerformSync(Account account, Bundle extras, String authority, ContentProviderClient provider, SyncResult syncResult) {

    for (String key : extras.keySet())
    {
        Log.d("Bundle Debug", key + " = \"" + extras.get(key) + "\"");
    }

       //Code to send to server

}

假设在上面的示例中,变量 extras 是在过滤联系人列表中的更改后获得的包,想要将它们更新到服务器。现在 SyncAdapter 框架或操作系统将如何检测更改并更新该联系人的脏标志?当然我已经提供了AUTHORITY,不知道这对查找发生了什么变化有什么帮助。上述方法是正确的实现方法吗?

  1. 如何判断同步是否失败?或完成?

每次对联系人进行的修改都无需CALLER_IS_SYNC_ADAPTER https://developer.android.com/reference/android/provider/ContactsContract.html#CALLER_IS_SYNCADAPTER在 Uri 上将使 ContentProvider 设置DIRTY https://developer.android.com/reference/android/provider/ContactsContract.SyncColumns.html#DIRTY修改后的联系人的标志1。类似地,每个没有该参数的删除请求只会设置DELETED https://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html#DELETED标记而不是删除联系人。

您的 SyncAdapter 必须查询标记为脏的联系人或DELETED https://developer.android.com/reference/android/provider/ContactsContract.RawContactsColumns.html#DELETED,采取适当的操作(将新的联系人数据发送到服务器或从服务器删除联系人)并清除脏标志(通过用0拥有CALLER_IS_SYNCADAPTER参数到位)或通过再次删除联系人(再次具有CALLER_IS_SYNCADAPTER参数就位)。

我相信您无法通过设置“取消删除”联系人DELETED to 0,因为(根据我的经验)联系数据此时已被删除。只剩下 RawContact 条目(不过,也许我上次尝试时只是有一个行为不当的设备)。

指定以下内容很重要CALLER_IS_SYNCADAPTER,否则什么也不会发生(并且您的 SyncAdapter 注定要一次又一次地尝试同步这些联系人)。

关于问题2:

这完全取决于您的 SyncAdapter。您编写代码来同步联系人,并且 SyncAdapter 是唯一能够判断同步是否成功的人。一般来说,如果同步期间没有抛出异常,您可能可以假设它成功了。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 SyncAdapter 同步联系人,工作 的相关文章

随机推荐

  • 如何确定Compact Framework 3.5中dll文件的文件版本[重复]

    这个问题在这里已经有答案了 我想在指定路径时确定 c 中 dll 文件的文件版本 假设 path x y z dll 给定路径时如何查找 z dll 的文件版本 注意 我使用 Compact Framework 3 5 SP1 Get th
  • Bootbox 警报框中的新行

    我想在我的 Bootbox Alert Box 中新建一行 我知道在 Javascript 中你可以使用 n但这似乎不起作用 这是我尝试过的 bootbox alert Hello n world 您可以使用 html 来实现 bootbo
  • printf 中可以使用指向字符串的指针吗?

    我在想这样的事情 include
  • 使用角度材质 2 输入的自定义样式

    我正在尝试设计输入的样式 使其具有一定的宽度 我正在使用 Angular Material 2 但由于某种原因 css 中的样式没有应用于输入标签 这是我的问题的一个工作插件 http plnkr co edit qHbyig0gHtxdq
  • 解耦(并行处理)Web 应用程序的非立即进程的最佳方法?

    我正在寻找一种好的策略来真正解耦我的 Web 应用程序 ASP NET MVC C 的非立即进程 以进行并行处理 我将非立即定义为不需要立即完成以呈现页面或更新信息的所有事情 这些过程包括发送电子邮件 根据数据库信息更新一些内部统计数据 从
  • 从 dymola 模型获取高质量图片

    我需要从 dymola 的建模对象中获得相当好的图像 由于模型的尺寸 截取屏幕截图 使用截图工具会导致图片质量非常差 有没有办法导出我在dymola中画的 图片 您可以将模型导出为可扩展和可编辑的 SVG 图像 此致 雷内 贾斯特 尼尔森
  • 有没有办法将 Unicode 文本存储在配置为“US7ASCII”的 Oracle 数据库中

    我们最近遇到了一个障碍 即商标符号从一个 Oracle 数据库复制到另一个数据库 但它看起来像 我们已将问题跟踪到配置了 US7ASCII 字符集的目标数据库 不幸的是 我们目前无法重建数据库来解决这个问题 有没有一种方法可以定义特定列来使
  • C++ 3sum 复杂度

    我试图解决cpp中的3和问题 给定一个由 n 个整数组成的数组 S S 中是否存在满足 a b c 0 的元素 a b c 查找数组中所有总和为零的唯一三元组 class Solution public vector
  • WxPython:符合“确定”/“取消”按钮顺序的跨平台方式

    我正在学习 wxPython 所以大多数库和类对我来说都是新的 我正在创建一个首选项对话框类 但不知道确保 确定 取消 或 保存 关闭 按钮在平台上的顺序正确的最佳方法 该程序旨在在 GNOME 和 Windows 上运行 因此我想确保每个
  • rdi 寄存器用于无参数函数的目的

    考虑这个简单的函数 struct Foo int a int b int c int d int e int f Foo foo Foo f f a 1 f b 2 f c 3 f d 4 f e 5 f f 6 return f 它生成以
  • 无法为 Linux Redhat 服务器上安装的 R studio 安装 Devtools 包

    我无法安装devtools在 Redhat Linux 服务器上的 R Studio 中打包 这些错误消息出现 ERROR configuration failed for package RCurl removing home xx R
  • Stripe CLI ubutu 安装问题

    我想在 ubuntu 20 04 上安装 Stripe CLI 我按照 Stripe 文档中的步骤安装 从以下位置下载最新的 linux tar gz 文件https github com stripe stripe https githu
  • 如何使用 Jetty 客户端获取基于请求的连接所花费的时间

    我想计算根据要求请求开始和连接建立 TCP 连接建立 之间的时间 我问了这个问题question https stackoverflow com questions 66605208 how to get the time it took
  • 来自同一原始指针的 C++ 多个唯一指针

    考虑下面我的代码 我对唯一指针的理解是 只能使用一个唯一指针来引用一个变量或对象 在我的代码中 我有多个 unique ptr 访问同一变量 这显然不是我所知道的使用智能指针的正确方法 因为指针应该从创建时就拥有完整的所有权 但是 为什么这
  • 在 Android 移动设备上使用 Chrome 调试 Service Worker

    我正在开发一个渐进式 Web 应用程序 为了确保它可以在移动设备上运行 特别是在 Android 版 Chrome 上 因为它有 90 的用户 我正在尝试在 Android 设备上测试 Service Worker 不幸的是 在安卓版 Ch
  • 将芯片/标签移出 MUI 中的自动完成框

    我正在使用MUIAutocomplete组件并试图弄清楚是否可以移动芯片 标签outside输入框的 这可能吗 我更希望芯片列在盒子下方 这样 文本框就可以仅用于用户输入 而不是both显示芯片 标签和用户输入 我尝试过使用其中一个基本演示
  • 使用数据注释传递错误消息字符串

    使用数据注释的错误消息 但在 ErrorMessage 中我想传递变量字符串 但是当我这样做时 它会在构建项目时给出错误 string errorMessage Something happened Remote IsTimeValid A
  • 总是需要绑定套接字吗?

    好吧 我的问题可能看起来像是一个基本问题 但我对网络编程方面很陌生 我想知道 1 是否总是需要绑定套接字才能从中接收消息 我看到一个嗅探器代码 原始套接字 其中直接调用recvfrom以及它调用的另一段代码bind然后是接收 2 AF 和
  • 以编程方式按数据表中的每个列范围对数字列进行颜色格式化

    我在这里打开了一个关于如何在数据表中添加范围栏的线程 以编程方式对数据表中的数字列进行颜色格式 https stackoverflow com questions 54943418 programmatically color format
  • 使用 SyncAdapter 同步联系人,工作

    我目前正在开发一个 android 项目 在该项目中我想将移动联系人同步到服务器 经过大量研究后SyncAdapter并在中创建帐户accountmanager 我自己学会了 但是有两件事我不明白 我在谷歌中搜索了这些内容但无法得到完美的答