【发布时间】:2013-09-29 10:48:52
【问题描述】:
以下正在插入新联系人:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValueBackReference(Data.RAW_CONTACT_ID, 0)
.withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE)
.withValue(StructuredName.GIVEN_NAME, given_name)
.build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
我想切换到ContentValues,因为它更灵活。
但是,当我更改为ContentValues 时,它会失败,如下所示:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, null)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, null)
.build());
ContentValues values = new ContentValues();
values.put(StructuredName.GIVEN_NAME, given_name)
ops.add(ContentProviderOperation.newInsert(Data.CONTENT_URI)
.withValues(values).build());
getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops);
这只会添加一个空联系人。
看起来我应该在我的新版本中调用类似withValueBackReference() 的东西,但不知道该怎么做。有什么想法吗?
【问题讨论】:
标签: android contacts android-contentprovider contactscontract