从 Android 通讯录中删除联系人

2024-03-15

我正在尝试从手机通讯录中删除联系人。该联系人会从手机联系人中删除,但不会从服务器端(Google 联系人)中删除,并且当 Google 联系人同步触发时,已删除的联系人会重新出现。下面是我的代码。

public static void deleteContact(long rawid, ContentResolver contentResolver) {
    ArrayList<ContentProviderOperation> ops = new ArrayList<>();
    Uri uri = ContactsContract.RawContacts.CONTENT_URI
            .buildUpon()
            .appendQueryParameter(
                    ContactsContract.CALLER_IS_SYNCADAPTER,
                    "true")
            .build();
    ops.add(ContentProviderOperation
            .newDelete(uri)
            .withSelection(
                    ContactsContract.RawContacts._ID + " = ?",
                    new String[]{Long.toString(rawid)})
            .build());

    try {
        contentResolver.applyBatch(
                ContactsContract.AUTHORITY,
                ops);
    } catch (RemoteException | OperationApplicationException e) {
        e.printStackTrace();
    }
} 

你应该尝试ContactsContract.CALLER_IS_SYNCADAPTER as false在你的代码中。设置为 true 时,联系人将从数据库中永久删除。但是,当下次同步发生时,联系人会同步回来。 Google 同步如何检查已删除的联系人,使用已删除标志,仅当您设置时才会设置该标志ContactsContract.CALLER_IS_SYNCADAPTER as false。下面是 ContactsProvider 类(联系人数据存储的 contentprovider)的代码片段

if (callerIsSyncAdapter || rawContactIsLocal(rawContactId)) {
    // When a raw contact is deleted, a SQLite trigger deletes the parent contact.
    // TODO: all contact deletes was consolidated into ContactTableUtil but this one can't
    // because it's in a trigger.  Consider removing trigger and replacing with java code.
    // This has to happen before the raw contact is deleted since it relies on the number
    // of raw contacts.
    db.delete(Tables.PRESENCE, PresenceColumns.RAW_CONTACT_ID + "=" + rawContactId, null);
    count = db.delete(Tables.RAW_CONTACTS, RawContacts._ID + "=" + rawContactId, null);
    mTransactionContext.get().markRawContactChangedOrDeletedOrInserted(rawContactId);
} else {
    count = markRawContactAsDeleted(db, rawContactId, callerIsSyncAdapter);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

从 Android 通讯录中删除联系人 的相关文章

随机推荐

  • 更改 UISwitch 应用程序的颜色

    我在用UISwitch在 iOS 3 中在我的应用程序中创建一个开关元素 它的默认颜色设置为蓝色 但我想将其颜色更改为棕色 我怎样才能为它选择不同的颜色UISwitchiOS 3 中的元素 我怎样才能为它选择不同的颜色UISwitch现代
  • 忽略 Oracle DUP_VAL_ON_INDEX 异常有多糟糕?

    我有一个表 用于记录用户是否至少查看过一个对象一次 因此 HasViewed ObjectID number FK to Object table UserId number FK to Users table 两个字段都不为 NULL 并
  • WCF客户端:第一次调用失败,第二次调用成功

    我有一个 REST Web 服务 它使用 WCF 客户端调用外部 SOAP Web 服务 此 REST Web 服务托管在我们测试环境中的 IIS 中 当调用 REST Web 服务 然后调用外部 Web 服务 使用 WCF 客户端 时 在
  • 当按钮位于 UITableViewCell 上时,为什么 UIButton shownTouchWhenHighlighted 不起作用?

    I put a UIButton on a UITableViewCell并设置其showsTouchWhenHighlighted财产给YES 单元格的选择风格是UITableViewCellSelectionStyleNone 我有一个
  • 使用重复列重塑数据

    我正在尝试使用重塑来重组我的数据集 这是我的数据的一个子集 它是一个 16 X 198 数据框 每个奇数列都是 16 年的列表 偶数列具有不同国家 地区的值 Algeria x Algeria y Argentina x Argentina
  • ggplot 中的等值线图,其中包含有孔的多边形

    我正在尝试绘制德国的分区统计图 显示各州的贫困率 灵感来自这个问题 https stackoverflow com questions 21651985 shapefile to produce a linked micromap in r
  • Spring:我希望为 Web 应用程序创建一个 junit 测试 - 需要 WebApplicationContext

    我正在编写一个 junit 测试 以便 令人惊讶地 独立测试我的应用程序的一部分 问题是我在单元测试中调用的构造函数中执行以下行 WebApplicationContext webApplicationContext ContextLoad
  • 如何在 SELECT 语句的 WHERE 子句中传递 php 变量?

    我有一个 php 变量 我想在我的数据库中使用此变量获取数据库中的另一个字段where clause My code require conn php module POST postmodule query SELECT width FR
  • 使用 scipy 计算两个正态分布的重叠概率

    我有两条 scipy stats norm mean std pdf 0 正态分布曲线 我试图找出两条曲线的差异 重叠 我如何在Python中使用scipy计算它 谢谢 开始Python 3 8 标准库提供了NormalDist https
  • 如何在鼠标悬停在栏上时显示标签

    我用 Chartist js 制作了一个条形图 现在我想在栏上添加一些监听事件 如何让鼠标悬停在栏上时显示标签 您有 2 个选择 Option 1 您可以使用一个工具提示插件 你可以在这里找到它 https github com Globe
  • Jquery 验证:根据下拉选择动态添加/删除规则

    我有一个下拉选择器 其值从 1 到 4 根据选择 表单中的后续输入将被隐藏 并且每个输入所需的验证都会被删除 例如 如果选择 2 则显示输入 1 2 并添加所需的验证 同时隐藏 3 4 并删除验证 dropdownSelector chan
  • 将多个 jar 合并为一个(使用 Maven)

    我在 javafx 中有一个项目 我有 3 个依赖项 我尝试使用 maven 将它们与我的主体 jar 结合起来 结果我得到了一个罐子 1 82mb 但是当我点击他时 他没有启动提示出现 pom xml
  • 连接Redis集群失败

    我已经设置了 Redis 集群谷歌计算引擎 http console developers google com by 点击部署 https cloud google com solutions redis click to deploy
  • 获取 WhatsApp 消息

    是否可以创建一个监听器来获取消息whatsApp在安卓中 我的意思是就像你有一个broadcastReceiver在android中收听传入的短信 这件事是否需要任何 API 或者这是合法的事情 还是我需要获得任何许可whatsApp Wh
  • 如何在没有源代码的情况下在类中放置断点?

    我有一个 Web 应用程序 我需要找到访问 http 请求对象的所有类 因为其中一个类导致了难以发现的错误 因此我想在ServletRequest实现的一些方法中放置断点 然而 这个实现是由 Weblogic 提供的 我没有其来源 如何在没
  • GeoChart:标记加载速度非常慢

    google charts load current packages geochart google charts setOnLoadCallback drawRegionsMap function drawRegionsMap var
  • 使用 iconv 将 UTF8 转换为 UTF16

    当我使用 iconv 从 UTF16 转换为 UTF8 时 一切都很好 但反之亦然 它不起作用 我有这些文件 a 16 strings Little endian UTF 16 Unicode c program text a 8 stri
  • Android-布局的正确定位

    我似乎无法按照我想要的方式正确定位我的布局 我的布局看起来像这样 LinearLayout LinearLayout ListView LinearLayout TextView TextView TextView Button 我的目标是
  • 如何更改全局 .vscode 文件夹的位置?

    我正在 Linux 上设置 Visual Studio Code 由于机器是共享的 我的 HOME文件夹的大小受到限制 没有空间容纳扩展名 存储在 HOME vscode 我尝试安装它们失败了 我在其他开发目录上确实有足够的空间 但我找不到
  • 从 Android 通讯录中删除联系人

    我正在尝试从手机通讯录中删除联系人 该联系人会从手机联系人中删除 但不会从服务器端 Google 联系人 中删除 并且当 Google 联系人同步触发时 已删除的联系人会重新出现 下面是我的代码 public static void del