如何显示自定义外部数据排序的设备地址簿

时间:2017-11-20 14:40:29

标签: android android-contacts

在我的Android应用程序中,我想显示移动用户的联系人(姓名,个人资料图片),首先显示已经安装并注册该应用程序的联系人(匹配是通过联系人的电子邮件进行的)。

尝试遍历每个联系人并匹配,如果他们的电子邮件已经注册(在外部SQLITE表中)似乎不是一种有效的方式。

我想直接添加(在地址簿的某处?)额外的数据“isRegistered = true / false”,并通过此值命令我的addreess book查询以滚动地址簿。 可能吗?如何详细实现这个?

1 个答案:

答案 0 :(得分:1)

选项1

我认为最有效的方式是你最初的想法,略有改进:

  1. 在本地SQLite数据库中存储已注册电子邮件列表(针对用户的联系人)。
  2. 在应用程序启动时阅读整个电子邮件列表,并将其存储在HashSet
  3. 在对联系人进行排序时,创建一个自定义比较器,首先检查联系人是否是应用用户,然后才回退到名称比较。
  4. 选项2

    如果您仍想检查在Contacts DB中存储自定义值的选项,并将其集成到查询中,则需要创建SyncAdapter

    这基本上是一种能够将联系人与服务器同步到您自己的RawContact的服务,然后将其聚合到一个或多个现有的RawContacts中,就像GoogleGoogle Contacts所做的那样。 您可以将其设置为在添加新联系人时收到通知,并让SyncAdapter将所需信息添加到联系人,以便它显示指向您应用的链接。

    如果您转到手机设置>帐户,您可以在那里看到Whatsapp和Google的SyncAdapters,您可以在其中关闭/打开它们。

    要创建同步适配器,您可以关注official docs或此great tutorial