合并原始联系人

时间:2012-09-09 16:23:47

标签: android contactscontract android-syncadapter rawcontacts

我有一个帐户和一个同步适配器,可以添加带有相应私有数据条目的新原始联系人。 我正在创建的联系人是基于电话号码的,这意味着我正在为每个现有的电话号码创建一个新条目。

如何将原始联系人与链接到现有电话号码的现有原始联系人合并?

我尝试在数据表中创建一个新的电话号码条目,并将其链接到我正在添加的原始联系人。它有效,但它正在创建一个复制电话号码。

我也尝试过设置联系人ID,显示名称,secondery显示名称但没有成功...我可以在原始联系人中更改的唯一数据是帐户名称和类型,以及列SYNC1 ... SYNC4

2 个答案:

答案 0 :(得分:0)

原始联系人表每个联系人保留1行,数据表可以为Raw表中的每一行保留任意数量的行。

要向联系人添加新电话号码,请在数据表中插入行,ContactsContract.Data.RAW_CONTACT_ID设置为该联系人的原始表行_id

答案 1 :(得分:0)

您需要更新AggregationExceptions表中的条目。 请参阅:http://developer.android.com/reference/android/provider/ContactsContract.AggregationExceptions.html

如果需要,支持批量加入的示例代码:

ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();
Builder builder = ContentProviderOperation.newUpdate(AggregationExceptions.CONTENT_URI);
builder.withValue(AggregationExceptions.TYPE, AggregationExceptions.TYPE_KEEP_TOGETHER);
builder.withValue(AggregationExceptions.RAW_CONTACT_ID1, raw1);
builder.withValue(AggregationExceptions.RAW_CONTACT_ID2, raw2);
operations.add(builder.build());
contentResolver.applyBatch(ContactsContract.AUTHORITY, tempArrayList);