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

标签 android android-contacts

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

然后在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/

相关文章:

c# - 在c#中使用android的.so文件

Android Retrofit 使用授权主体上传文件

android - OCR简单示例android使用tesseract编译报错

android - 查询联系人的组织,但获取地址类型和值

android - 如何在 Android 中以编程方式添加联系人?

java - 使用soot比较两个apk文件的调用图

android - 如何在 Retrofit 2.0.0 beta 1 中获取简单的 JSON 对象?

android - 使用 Intent.ACTION_PICK 读取电话号码和地址

安卓通讯录删除

android - 如何从您的应用程序发送联系人(使用 NFC)并将其保存在接收设备的联系人列表中?