Запись контакта в базу данных контактов - Android 2.1 - PullRequest
3 голосов
/ 12 июля 2010

Я пытаюсь записать новый контакт в базу данных контактов в Android 2.1.Но я получаю следующую ошибку:

java.lang.UnsupportedOperationException: Aggregate contacts are created automatically.

Я добавил следующие поля в манифест:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

Это мой код:

ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();

String accountType = null;
String accountName = null;

Builder builder = ContentProviderOperation.newInsert(
ContactsContract.Contacts.CONTENT_URI);
builder.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType);
builder.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName);

ContentProviderOperation op = builder.build();
Log.i("contacts", "op.getUri(): " + op.getUri());
ops.add(op);

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(
        ContactsContract.Data.RAW_CONTACT_ID,
        ops.size()
    )
    .withValue(
        ContactsContract.Data.MIMETYPE,
        StructuredName.CONTENT_ITEM_TYPE
    )
    .withValue(StructuredName.DISPLAY_NAME, contact.getFullName())
    .build()
);

ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI)
    .withValueBackReference(
        ContactsContract.Data.RAW_CONTACT_ID,
        ops.size()
    )
    .withValue(
        ContactsContract.Data.MIMETYPE,
        ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE
    )
    .withValue(
        ContactsContract.CommonDataKinds.Phone.NUMBER,
        contact.getPhoneNumber()
    )
    .build()
);

try {
    this.cr.applyBatch(ContactsContract.AUTHORITY, ops);
}

1 Ответ

2 голосов
/ 10 мая 2011
ops.add(ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI).withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, rowContactInsertIndex).withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE).withValue(Phone.NUMBER, cPhone).withValue(Phone.TYPE, cPhoneType).build());

это может вам помочь. сделать то же самое для полного имени, телефона и электронной почты

...