我正在使用android studio 3.1.4,我想要更新如下所示的android联系人
ArrayList<ContentProviderOperation> ops = new ArrayList<>();
ContentProviderOperation.Builder builder1 = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?", new String[]{String.valueOf(contactId), ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE})
.withValue(ContactsContract.CommonDataKinds.Im.PROTOCOL, 1)
.withValue(ContactsContract.CommonDataKinds.Im.DATA, "MyTest@live.com");
ops.add(builder1.build());
ContentProviderOperation.Builder builder2 = ContentProviderOperation.newUpdate(ContactsContract.Data.CONTENT_URI)
.withSelection(ContactsContract.Data.CONTACT_ID + "=?" + " AND " + ContactsContract.Data.MIMETYPE + "=?", new String[]{String.valueOf(contactId), ContactsContract.CommonDataKinds.Im.CONTENT_ITEM_TYPE})
.withValue(ContactsContract.CommonDataKinds.Im.PROTOCOL, 2)
.withValue(ContactsContract.CommonDataKinds.Im.DATA, "MyTest@yahoo.com");
ops.add(builder2.build());
context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
结果是该联系人在Im
字段中仅具有第二个值“ MyTest@yahoo.com”。以某种方式覆盖第一个值MyTest@live.com
。
所以问题是当联系人字段有多个要更新的值时,如何更新联系人字段?
注意:如果联系人字段没有值,则更新不会影响它。它保持为空,没有任何值。