Каждое поле (адрес электронной почты, имя, адрес) имеет свой собственный тип MIME, который следует использовать для обновления поля.
Мы будем работать с таблицей данных, где каждый Data.RAW_CONTACT_ID представляет подробную информацию о каком-либо контакте.
Итак, нам нужно найти Data.RAW_CONTACT_ID, где id - это идентификатор контакта, который вы хотите отредактировать.
Надеюсь, этот код будет вам полезен.
String selectPhone = Data.RAW_CONTACT_ID + "=? AND " + Data.MIMETYPE + "='" +
ContactsContract.CommonDataKinds.StructuredPostal.CONTENT_ITEM_TYPE + "'" ;
String[] phoneArgs = new String[]{String.valueOf(rawContactId)};
ops.add(ContentProviderOperation.newUpdate(Data.CONTENT_URI)
.withSelection(selectPhone, phoneArgs)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.TYPE, ContactsContract.CommonDataKinds.StructuredPostal.TYPE_WORK)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.STREET, STREET)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.CITY, CITY)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.REGION, REGION)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.POSTCODE, POSTCODE)
.withValue(ContactsContract.CommonDataKinds.StructuredPostal.COUNTRY, POSTCODE)
.build());
this.context.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
Если был создан новый контакт, но без адреса, и теперь вы хотите добавить адрес к этому контакту. В этом случае используйте тот же запрос, что и выше, но просто измените newUpdate на newInsert, поскольку такой строки еще не существует.