Android联系人链接如何工作?


8

我想了解Android中的联系人链接是如何工作的-具体地说,我想几乎从算法的角度来深入了解它。

我在手机上观察到的是,有些联系人是自动链接的,有些不是自动链接的(即使当您进入手动链接屏幕时,Android会显示很好的匹配),对此我感到困惑。

所以我的具体问题是:

  1. 什么是自动联系人链接的触发条件?什么时候发生?
  2. 假设1)的答案是“手动或通过帐户同步添加新联系人时”。那么,添加此新联系人后会发生什么?Android是否会遍历所有现有联系人并尝试找出新联系人是否只是链接联系人?
  3. Android何时将新联系人识别为链接联系人?名称何时匹配?电话号码?邮件吗 这些组合吗?

任何见解都会帮助我解决这个问题,谢谢。

Answers:


10

请参阅Android Developers网站上的技术资源,在“ 使用联系人API”中有关自动汇总联系人数据的部分。

如文章所述:

添加或修改原始联系人时,系统会寻找匹配(重叠)的原始联系人以与其进行汇总。它可能找不到任何匹配的原始联系人,在这种情况下,它将创建仅包含原始原始联系人的聚合联系人。如果找到单个匹配项,则会创建一个包含两个原始联系人的新联系人。它甚至可能会找到多个相似的原始联系人,在这种情况下,它将选择最接近的匹配项。

如果满足以下条件中的至少一个,则两个原始联系人被视为匹配:

  • 它们具有匹配的名称。
  • 它们的名称由相同的单词组成,但顺序不同(例如"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)。当比较两个电话号码,系统会忽略特殊字符,例如"*""#""(", ")",和空白。同样,如果两个数字之间的唯一区别是一个拥有国家代码,而另一个没有国家代码,则系统会将其视为匹配项(日本国家代码中的数字除外)

自动聚合不是永久的;组成原始联系人的任何更改都可能创建新的聚合或破坏现有的聚合。

然后,本文继续说明应用程序可以分配给它创建的原始联系人的各种模式。根据模式,系统将:

  • 当发现与其他联系人的相似性时,自动汇总该联系人。如果不再存在相似之处,则将删除这些聚合。
  • 切勿将联系人与其他任何联系人聚集在一起。
  • 即使该联系人发生更改,以至于该联系人将被从聚合组中删除,也不会对其进行任何进一步的聚合。

除了这种自动聚合外,还允许应用程序手动设置聚合联系人。在这些情况下,算法取决于应用程序。

最后,您可以通过编辑一对联系人中的一个,然后从溢出菜单中进行选择,在“ 脉” 应用中手动加入联系人Join


你能总结一下链接吗?如果失败了,您的答案将变得毫无用处。
马修(Matthew)

@Matthew请确定。因为该站点的解释非常简洁,所以我决定使用适当的引号和引用对其进行内联。为了完整起见,我还提供了有关手动汇总联系人的详细信息。
ctt 2012年

@Borek,我知道这是一个非常老的答案,但是您介意将其标记为您问题的答案吗?
ctt

链接已失效。@ctt是否可以通过新链接更新答案?
萨米2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.