【问题标题】:How contacts content provider in android structures its data?android中的联系人内容提供者如何构造其数据?
【发布时间】:2013-09-24 22:14:35
【问题描述】:

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

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

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

【问题讨论】:

    标签: android android-contentprovider


    【解决方案1】:

    android 是否存储有关姓名、电话、电子邮件、公司和 不同表格中的注释?

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

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

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

    【讨论】:

    • 主链接已失效。
    • 正确,文章的链接好像被删除了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-15
    • 1970-01-01
    • 2021-05-30
    • 2019-06-28
    • 2012-04-03
    相关资源
    最近更新 更多