【问题标题】:How is Android contact information stored?Android 联系人信息如何存储?
【发布时间】:2013-04-24 05:41:27
【问题描述】:

我正在编写一个处理 Android 联系人信息的类,经过一番努力,我编写了一个函数来检索有关用户联系人的所有信息,包括所有电话号码、电子邮件地址、邮政地址等。但是,我仍然不明白这些信息是如何存储在手机中的,所以我希望有人能给我一些见解。

因此,一个用户可以有多个电话号码、多个电子邮件地址等。对于包含所有联系人的表格,您的联系人为 ContactsContract.Contacts.CONTENT_URI,对于包含所有联系人的表格,您的电话号码为 ContactsContract.CommonDataKinds.Phone.CONTENT_URI。但是还有ContactsContract.RawContacts.CONTENT_URI,我认为它应该包含您联系人的所有数据。我的假设是,在 Contacts 表中,联系人 ID 是单独行的唯一标识符,而对于 Phone 表,电话号码是唯一行标识符。如果 RawContacts 包含 ContactsContract 类的所有列,那么每一行将没有唯一标识符,因为每个联系人可能被分配多个电话号码、多个电子邮件地址等。换句话说,我不明白这样的表是结构化的。

所以我的问题是:包含联系信息的各种表格——Contacts、Phone、Email、StructuredPostal 等——是完全独立的,还是从更大的 RawContacts 表格中提取的每个表格的信息?还是我误解了 RawContacts 是什么?由于我正在编写的课程将帮助将联系人从电话联系人列表移动到单独的数据库中,因此了解这些信息将帮助我了解我应该将信息存储在多个数据库中还是只存储一个数据库中(类似于我上面描述的 RawContacts 数据库) .

【问题讨论】:

  • 如果你的手机已经root了,你可以通过ddms自己拉db并检查它,它在/data/data/com.android.providers.contacts,你可以使用this Firefox插件。

标签: android


【解决方案1】:

Contacts Provider 上的 android API 指南很好地描述了联系人表的存储方式(有点复杂,允许合并许多联系人)

数据层次结构图

你的问题:

所以我的问题是:各种表格是否包含联系人 信息——联系人、电话、电子邮件、结构化邮政、 等等--完全分开,或者是其中每一个的信息 从较大的 RawContacts 表中提取的表?

再次查看文档(我没有针对这些表进行编码,仅阅读文档),电话、电子邮件...表似乎是分开的。但是,信息看起来存储在两个表中,即联系人以及 RawContacts。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    • 2012-04-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多