更新联系人姓名将最后一个联系人保留一秒钟

问题描述 投票:0回答:1

当我通过以下代码更新联系人姓名时,它会在几秒钟内从原始联系人中创建新联系人,然后将其删除。

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();
        }

(此原始联系人来自Google,具有whatsApp编号)。执行此更新之前,表如下所示:-

原始表] >>

Account type | contact_id | _id
com.google     6            1
com.whatsapp   6            2

联系人表:

] >>
Display Name | _id    | name_row_contact_id
Lorem          6        1

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

Display Name | _id    | name_row_contact_id
googleName   | 6      | 1
Lorem        | 6      | 2    //---> Why its happening ??

*更新操作几秒钟后,此Lorem被删除*

!!!发生这种情况时,我的应用程序认为添加了新联系人,然后再次将其删除:( !!!

更新联系人姓名时我做错什么了吗?

请帮助!

当我通过以下代码更新联系人姓名时,它会在几秒钟内从原始联系人中创建新联系人,然后将其删除。字符串,其中= ContactsContract.Data.RAW_CONTACT_ID +“ = ...

android android-contacts android-contentresolver
1个回答
0
投票

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

[当我用行ID更改名称时,显然它将重命名,但是其他移动应用程序(例如WhatsApp)也在数据库中未更改名称的条目。这就是为什么Edge 7设备以旧名称在Contacts表中创建新条目的原因仍然存在于Data表中(由whatsApp使用)。在WhatsApp执行同步后的某个时间后,此旧联系人将被删除。

© www.soinside.com 2019 - 2024. All rights reserved.