Вставьте RawContact с определенным контактным идентификатором

Я пытаюсь создать необработанный контакт в Android с определенным идентификатором контакта, поэтому он связан с другими необработанными контактами с тем же контактным идентификатором (не с необработанным контактом).

Проблема в том, что я не могу вставить Contact_ID в ContentProviderOpertations. Использование следующего кода возвращает «Вставка не удалась»

    ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
    int id = (int) contactId;

    String condition = Data.RAW_CONTACT_ID + "=?";
    String[] parameters = { "" + id };

    try {

        String accountName = account.name;
        String accountType = account.type;
        ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI)
                .withValue(RawContacts.ACCOUNT_TYPE, accountType)
                .withValue(RawContacts.ACCOUNT_NAME, accountName).build());
        ops.add(getAccountGroupOperation(account));

        ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
                .withValueBackReference(Data.RAW_CONTACT_ID, 0)
                .withValue(Data.CONTACT_ID, "" + id)
                .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
                .withValue(StructuredName.DISPLAY_NAME, contact.getName())
                .build()); 
        MyApplication.getAppContext().getContentResolver()
                .applyBatch(ContactsContract.AUTHORITY, ops);
    } catch (Exception e) {
        ...
    }

Что я делаю неправильно?


person morohbj    schedule 05.01.2012    source источник


Ответы (2)


Это можно сделать, но не так, как вы хотите. Вы можете заставить приложение «Контакты» присоединиться к двум необработанным контактам, добавив оба необработанных идентификатора контакта в таблицу AggregationExceptions, установив тип как TYPE_KEEP_TOGETHER.

http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html

person Ankur Kumar    schedule 15.01.2012

Ты не сможешь это сделать. Агрегатор контактов Android автоматически объединяет необработанные контакты в контакты. Вам не нужно беспокоиться о назначении необработанного контакта контакту.

person robertly    schedule 10.01.2012