2

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

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

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

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

4

2 回答 2

0

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

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

于 2012-09-09T19:56:46.873 回答
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);
于 2015-10-14T13:02:33.173 回答