我正在尝试在android中创建一个具有特定联系人ID的rawcontact,因此它与其他具有相同contactid(不是rawcontactid)的rawcontacts链接。
问题是我无法将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) {
...
}
我做错了什么?
答案 0 :(得分:3)
可以这样做,但不是以你想要的方式。通过将类型设置为TYPE_KEEP_TOGETHER
,可以通过将原始联系人ID添加到AggregationExceptions表来使联系人应用程序加入两个原始联系人http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html
答案 1 :(得分:0)
你不能这样做。 Android联系人聚合器会自动将原始联系人聚合到联系人中。您不必担心将原始联系人分配给联系人。