首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >更新联系人名称使最后一个联系人保持一秒钟。

问更新联系人名称使最后一个联系人保持一秒钟。
EN

Stack Overflow用户
提问于 2020-04-26 10:17:00
回答 1查看 33关注 0票数 0

当我用下面的代码更新联系人名称时,它会在几秒钟内从原始联系人中创建新联系人,然后删除它。

代码语言:javascript
复制
String where = ContactsContract.Data.RAW_CONTACT_ID+" = ? AND "+ContactsContract.Data.MIMETYPE+" = ?";
String[] agrs = {"1",ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE};
        ArrayList<ContentProviderOperation> ops = new ArrayList<>();
        ops.add(ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
                .withSelection(where, agrs)
                .withValue(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, "googleName")
                .withValue(ContactsContract.CommonDataKinds.StructuredName.FAMILY_NAME, null)
                .withValue(ContactsContract.CommonDataKinds.StructuredName.DISPLAY_NAME, "googleName")
                .build());
        try {
            context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
        } catch (Exception e) {
            e.printStackTrace();
        }

(这个原始联系人来自谷歌,它有一个whatsApp号码)。在执行此更新之前,表如下所示:-

生料表

代码语言:javascript
复制
Account type | contact_id | _id
com.google     6            1
com.whatsapp   6            2

联系人表:

代码语言:javascript
复制
Display Name | _id    | name_row_contact_id
Lorem          6        1

重命名操作联系人表后的如下所示:-

代码语言:javascript
复制
Display Name | _id    | name_row_contact_id
googleName   | 6      | 1
Lorem        | 6      | 2    //---> Why its happening ??

*在更新操作几秒钟后,这个Lorem被删除*

!!!在这种情况下,我的应用程序认为添加了新的联系人,然后再删除:(!

在更新联系人名称时,我是否做错了什么??

请帮帮我!

EN

回答 1

Stack Overflow用户

发布于 2020-04-27 08:25:36

我已经找到了问题的原因和解决办法。

当我用行id更改名称时,显然它会重命名,但其他移动应用程序(如WhatsApp )也会在数据库中输入名称尚未更改的内容。这就是为什么Edge 7-设备在Contact表中创建新条目的原因,因为旧名称仍然存在于数据表中(由whatsApp使用)。当WhatsApp执行同步时,这个旧的联系人就会被删除。

解决方案:如果您不是用row_id重命名,而是通过contact_id重命名,那么重命名的最佳原因是。它还将重命名数据表中其他条目的名称。

代码语言:javascript
复制
    String where = ContactsContract.Data.CONTACT_ID + " = ? AND " + ContactsContract.Data.MIMETYPE + " = ?";
            String[] agrs = {contactId, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE};
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61439082

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档