每次写同一个联系人后重复联系的部分内容(Android 2.0+)

时间:2010-06-01 09:57:43

标签: android

我在使用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

1 个答案:

答案 0 :(得分:0)

我认为对于现有的联系人,您可以在执行insert之前执行更新或删除该联系人所存在的数据的行。正如我从您所拥有的代码中理解的那样,您正在插入内容而非更新