【发布时间】: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