часть контакта повторяется после каждой записи одного и того же контакта (Android 2.0+) - PullRequest
0 голосов
/ 01 июня 2010

Я столкнулся с этой проблемой при написании контактов через 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

1 Ответ

0 голосов
/ 01 июня 2010

Я думаю, что для существующего контакта вы либо обновляете, либо удаляете строки данных, которые существуют для этого контакта, перед выполнением insert Как я понимаю из имеющегося у вас кода, вы вставляете что-то, а не обновляете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...