Вставьте RawContact с определенным контактом - PullRequest
3 голосов
/ 05 января 2012

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

Проблема в том, что я не могу вставить 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) {
        ...
    }

Что я делаю не так?

Ответы [ 2 ]

3 голосов
/ 15 января 2012

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

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

0 голосов
/ 11 января 2012

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

...