当我通过以下代码更新联系人姓名时,它会在几秒钟内从原始联系人中创建新联系人,然后将其删除。
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 +“ = ...
我已经找到问题的原因和解决方法。
[当我用行ID更改名称时,显然它将重命名,但是其他移动应用程序(例如WhatsApp
)也在数据库中未更改名称的条目。这就是为什么Edge 7设备以旧名称在Contacts表中创建新条目的原因仍然存在于Data表中(由whatsApp使用)。在WhatsApp执行同步后的某个时间后,此旧联系人将被删除。