1

我的任务是从 android 设备上的所有联系人中检索姓名、电话、电子邮件、公司和便笺。我以前从未与内容提供商合作过。我阅读了内容提供商文档、教程、代码示例,但我仍然不太确定:android 是否将有关姓名、电话、电子邮件、公司和便笺的信息存储在不同的表中?

那么我是否必须为每个联系人分别查询姓名、电话、电子邮件、公司和备注?每个联系人 5 个查询 * 联系人数量 = 最有效的方式?还是我有更少查询的替代方案?为什么不将所有联系人和所有联系人字段存储在同一个表中,以便可以通过单个 SELECT 查询(它在 android 内容提供程序框架中的模拟)获取所有数据?

所以我的主要问题是:我必须为每个联系人进行 5 次查询还是有更有效的方法?

4

1 回答 1

0

android 会在不同的表格中存储有关姓名、电话、电子邮件、公司和便笺的信息吗?

几乎。姓名存储在 Contacts.DISPLAY_NAME 中。电话和电子邮件在数据表中,但要解释列名,您需要使用 ContactsContract.CommonDataKinds.Phone 类。

更新:我提到的原始文章已被删除。以下是相关链接:

如果您对幕后发生的事情感兴趣,谷歌实现了他们的联系人数据库(从 4.2 开始),因此电话、电子邮件都存储在同一个称为数据的表中。该表具有 data1、data2 ....data15 等列,只要该数据项的属性不超过 15,它就允许在该表中存储各种数据。我猜这是出于性能原因 - 选择所有数据的速度要快得多一次查询()调用中的一位联系人。名字是另一个故事。它存储在两个表中,“raw_contacts”(列 display_name)和“data”(列“data1”)

于 2013-10-16T10:19:52.003 回答