我正在编写一个处理Android联系信息的课程,经过一番努力,我编写了一个功能,可以检索有关用户联系人的所有信息,包括所有电话号码,电子邮件地址,邮政地址等。但是,我仍然不明白这些信息是如何存储在手机里的,所以我希望有人可以给我一些见解。
因此,用户可以拥有多个电话号码,多个电子邮件地址等。对于包含所有联系人和电话号码的表格ContactsContract.Contacts.CONTENT_URI
的联系人,您拥有ContactsContract.CommonDataKinds.Phone.CONTENT_URI
。但是,我认为还有ContactsContract.RawContacts.CONTENT_URI
,它应该包含联系人的所有数据。我的假设是在Contacts表中,联系人ID是单独行的唯一标识符,而对于Phone表,电话号码是唯一的行标识符。如果RawContacts包含ContactsContract类的所有列,那么每行将没有唯一标识符,因为每个联系人可能被分配了多个电话号码,多个电子邮件地址等。换句话说,我不明白这样的表是怎样的结构化。
所以我的问题是:包含联系信息的各种表 - 联系人,电话,电子邮件,结构化邮件等 - 是否完全分开,或者是从较大的RawContacts表中提取的每个表的信息?或者我误解了RawContacts是什么?由于我写的课程将有助于将联系人从电话联系人列表移动到一个单独的数据库中,知道这些信息将有助于我了解是否应将信息存储在多个数据库中或仅存储一个(类似于我上面描述的RawContacts数据库)
答案 0 :(得分:1)
Contacts Provider
上的android API指南很好地描述了联系人表格的存储方式(它有点复杂,允许合并多个联系人)
所以我的问题是:各种表格是否包含联系人 信息 - 联系人,电话,电子邮件,StructuredPostal, 等等 - 完全分开或是每个人的信息 从较大的RawContacts表中提取的表?
再次查看文档(我没有对这些表进行编码,只读取文档),电话,电子邮件...表似乎是分开的。但是,信息看起来存储在两个表,联系人以及RawContacts中。