Android - обновление поля контакта с несколькими значениями - PullRequest
0 голосов
/ 07 сентября 2018

Я использую 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 переопределяется.

Таким образом, вопрос заключается в том, как обновить поля контактов, если поле контакта имеет более одного значения для обновления ?.

Примечание : Если поле контакта не имеет значения, обновление не влияет на него. Он остается пустым без значения или значений.

...