【问题标题】:why won't contacts aggregate?为什么联系人不会聚合?
【发布时间】:2017-04-02 17:09:11
【问题描述】:

我的应用允许编辑联系人。在这种情况下,我选择了一个仅存在于一个帐户中的联系人并将其更改为与三个帐户相关联。但是,我最终得到了两个联系人,而不是一个,如下面的 ContactsContract 转储所示。为什么提供者不聚合它们?

agg 1821, display "A Z1", key 770i236434918d3893ea.2709i79dde86f8c1565d3.2709i506dc01a0d43d677.2709i4707c358f8fb503
  raw 1821, acct type com.google, acct name a@gmail.com
    data 10338, display "A Z1"
    data 10343, phone 123456, Pager
    data 10349, phone 545, Fax Work

agg 1861, display "A Z1", key 1780r1860-q29pq04pq5Bpq16p.2709r1861-q29pq04pq5Bpq16p
  raw 1860, acct type com.fusionone.account, acct name Backup Assistant
    data 10580, display "A Z1"
    data 10582, phone 123456, Pager
    data 10584, phone 545, Fax Work

  raw 1861, acct type com.google, acct name b@gmail.com
    data 10581, display "A Z1"
    data 10583, phone 123456, Pager
    data 10585, phone 545, Fax Work

在此转储中,三层表示聚合联系人行、原始联系人行和联系人数据行。前导词旁边的数字(例如 agg 1821)是 _ID 列值。 "display" 代表 DISPLAY_NAME。

更具体地说,我从来自帐户 a@gmail.com(混淆)的 agg 1821 开始。然后,我为另外两个帐户创建了两个新的原始联系人(1860 和 1861),使用与 agg 1821 相同的显示名称。您可以看到结果:两个新的原始联系人聚合在一起,但该对未与原始联系人聚合(1821) 联系方式。

【问题讨论】:

    标签: android contactscontract


    【解决方案1】:

    如果您希望RawContacts 通过写信给AggregationExceptions 来强制聚合,请不要假设系统会聚合相似的联系人:

    为每一对,创建一个操作:

    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);
    ContentProviderOperation op = builder.build();
    

    然后执行一个ArrayList的所有操作:

    ContentProviderResult[] res = resolver.applyBatch(ContactsContract.AUTHORITY, operationList);
    

    res 将包含有关所有操作成功/失败的信息

    【讨论】:

    • 我会给你一个+1,因为这种技术有效,并且是我正在使用的。然而,它并没有回答这个问题。除非有人能想出一个很好的理由,否则我的示例中的聚合算法失败了,否则它似乎毫无用处。
    • 自动聚合决策代码比较复杂,有可能也是根据联系人的创建日期来判断的,所以当你同时创建两个相同的联系人时,它会立即聚合,但不会旧的。我遇到过几天后发生聚合的情况,当时通过同步提供程序更新了联系人。
    猜你喜欢
    • 2016-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多