Я столкнулся с этой проблемой при написании контактов через API для Android 2.0 или выше.
Каждый раз, когда я пишу один и тот же контакт, который уже существует в моей учетной записи (Google
аккаунт) Я получил некоторую часть контакта, но все в порядке
другой нет. Например, поля типа FN, N, ORG, TITLE всегда находятся в одном
Копировать, но TEL, EMAIL, ADR добавляются дополнительно, так что после 2-й записи тот же контакт у меня есть
2 Скопируйте тот же TEL или EMAIL. Как заставить механизм API не повторять существующие данные?
Код:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
.build());
...
// adding phone number
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneValue);
builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType); // work/home
builder.withValue(ContactsContract.CommonDataKinds.Phone.LABEL, phoneLabel);
ops.add(builder.build());
...
try {
contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
//
}
Я попытался добавить: AGGREGATION_MODE на AGGREGATION_MODE_DISABLED.
но это ничего не изменило.
Буду рад любой подсказке в этом случае.
BR, Bogus