我在我的联系人中添加了一个新人,他的名字与另一个现有人的名字相同。
然后在contacts2.db的raw_contacts表中查看,发现两行的contact_id不同,aggregation_needed列为0。
正如我在 Android API 中发现的那样当我插入一条记录时应该发生聚合。所以我很困惑。
有没有详细的文档解释android contact中的聚合?
最佳答案
联系人聚合在您添加联系人后异步发生。
如果您在同一联系人来源下添加 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)。比较两个电话号码时,系统会忽略特殊字符,例如“*”、“#”、“(”、“)”和空格。此外,如果两个号码之间的唯一区别是一个有国家代码而另一个没有,则系统认为它们是匹配的(日本国家代码中的号码除外)。自动聚合不是永久的;组成原始联系人的任何更改都可能创建新的聚合或分解现有的聚合。
关于android - 在 Android 联系人中,聚合何时发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31714879/