我在使用API for Android 2.0或更高版本编写联系人时遇到了这个问题。 每次我写同一个联系人,我的帐户中已存在(Google 我得到了联系聚合的一部分,但是 其他没有。例如,FN,N,ORG,TITLE等字段总是在一个字段中 复制,但电话,电子邮件,ADR额外添加,所以在第二次写我同样的联系 2复制相同的电话或电子邮件。如何强制API引擎不重复现有数据?
代码:
ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>();
ops.add(ContentProviderOperation.newInsert(ContactsContract.RawContacts.CONTENT_URI)
.withValue(ContactsContract.RawContacts.ACCOUNT_TYPE, accountType)
.withValue(ContactsContract.RawContacts.ACCOUNT_NAME, accountName)
.build());
...
// adding phone number
ContentProviderOperation.Builder builder = ContentProviderOperation.newInsert(ContactsContract.Data.CONTENT_URI);
builder.withValueBackReference(ContactsContract.Data.RAW_CONTACT_ID, 0);
builder.withValue(ContactsContract.Data.MIMETYPE,
ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
builder.withValue(ContactsContract.CommonDataKinds.Phone.NUMBER, phoneValue);
builder.withValue(ContactsContract.CommonDataKinds.Phone.TYPE, phoneType); // work/home
builder.withValue(ContactsContract.CommonDataKinds.Phone.LABEL, phoneLabel);
ops.add(builder.build());
...
try {
contentResolver.applyBatch(ContactsContract.AUTHORITY, ops);
} catch (Exception e) {
//
}
我尝试在AGGREGATION_MODE_DISABLED上添加:AGGREGATION_MODE。 但它什么都没改变。
我很高兴在这种情况下提出任何暗示。
BR,Bogus
答案 0 :(得分:0)
我认为对于现有的联系人,您可以在执行insert
之前执行更新或删除该联系人所存在的数据的行。正如我从您所拥有的代码中理解的那样,您正在插入内容而非更新