在Android联系人中,何时发生聚合?

时间:2015-07-30 03:47:58

标签: android android-contacts

我在我的联系人中添加了一个新人,其姓名与另一个现有人员的姓名相同。

然后我在contacts2.db的raw_contacts表中检查了它们,发现两行的contact_id不同。而且aggregate_needed列为0。

正如我在Android API中发现的那样,当我插入记录时,会发生聚合。所以我很困惑。

是否有任何详细说明android联系人聚合的文件?

1 个答案:

答案 0 :(得分:1)

添加联系人后异步发生联系聚合。

如果在相同的联系人源下添加2个同名的联系人,则它不会自动聚合它们(因为我记得正确的ICS)

有关聚合规则的一些其他信息:

自动汇总

添加或修改原始联系人时,系统会查找与其聚合的匹配(重叠)原始联系人。它可能找不到任何匹配的原始联系人,在这种情况下,它将创建一个仅包含原始原始联系人的聚合联系人。如果找到单个匹配项,则会创建一个包含两个原始联系人的新联系人。它甚至可能找到多个类似的原始联系人,在这种情况下,它会选择最接近的匹配。如果满足以下条件中的至少一个,则认为两个原始联系人匹配:
•它们具有匹配的名称 •它们的名称由相同的单词组成,但顺序不同(例如,“Bob Parr”和“Parr,Bob”)
•其中一个为另一个有一个共同的短名称(例如,“Bob Parr”和“Robert Parr”)
•其中一个只有名字或姓氏,与其他原始联系人匹配。此规则不太可靠,因此仅当两个原始联系人还共享其他数据(如电话号码,电子邮件地址或昵称)时才适用(例如,Helen [“elastigirl”] = Helen Parr [“elastigirl”] )
•两个原始联系人中至少有一个完全没有名称,他们正在共享电话号码,电子邮件地址或昵称(例如,Bob Parr [incredible@android.com] = incredible@android.com)。

比较名称时,系统忽略大小写差异(Bob = BOB = bob)和变音符号(Hélène= Helene)。比较两个电话号码时,系统会忽略特殊字符,如“*”,“#”,“(”,“)”和空格。此外,如果两个数字之间的唯一差异是一个国家代码而另一个国家代码没有,那么系统会认为这些是匹配的(日本国家代码中的数字除外)。自动聚合不是永久性的;组成原始联系人的任何更改都可能会创建新的聚合或分解现有联系。