Я использую 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);
В результате у контакта будет только второе значение «MyTest@yahoo.com» в поле Im
. Каким-то образом первое значение MyTest@live.com
переопределяется.
Таким образом, вопрос заключается в том, как обновить поля контактов, если поле контакта имеет более одного значения для обновления ?.
Примечание : Если поле контакта не имеет значения, обновление не влияет на него. Он остается пустым без значения или значений.