关闭

Android系统通讯录的SQLite表的观察

805人阅读 评论(0) 收藏 举报
分类:
在Android系统中一般的应用程序不会将自己的数据暴露给其他应用程序使用。而对于Android手机中都存在的通信录、短信、通话记录、上网记录以及下载记录等消息都是使用数据库来保存,并使用ContentProvider来提供给其他应用程序来维护其数据的。这一节我们将探究通讯录在系统中的保存机制以及如何查询获取通讯录数据,进一步熟悉对共享数据的操作。
系统通讯录的保存
通讯录是系统本身自带的功能,但是默认为空。为了方便看到结果,我们需要向系统通讯录中添加一些数据。在添加好数据之后,我们来看看通讯录的数据库文件保存的这些联系人的信息。在Eclipse中切换到DDMS视图,选择File Explorer标签。打开目录data/data,发现文件夹com.android.providers.contacts,该目录下保存的数据库文件contacts2.db就是系统存储联系人的数据库,我们可以从模拟器中将数据库文件导出,看看系统到底是如何保存联系人的信息的。
系统中用了很多表来记录通讯录的相关信息。虽然表很多,但是大部分不需要过多的研究,只需要注意最常使用的三张表:contacts,data和raw_contacts。
1.contacts表
该表用于记录联系人的基本属性,
_id 是该表的主键,具有自增性
name_raw_contacts_id 是联系人的id号,与raw_contact表中的id关联,通过它可以查询到其他表中的数据。
photo_id 是头像的id,如果没有设置联系人头像,这个字段就为空。
has_phone_number 表示是否有电话号码,值为1,表示至少有1个电话号码。值为0,表示没有。
2.data表
该表用于保存联系人的具体信息,其中第四列是联系人id号,与raw_contact表中的id关联。data1~data15保存着联系人的信息,包括联系人名称,电话号码,电子邮件,地址以及备忘录等等。
3.raw_contacts表
该表用于保存联系人姓名版本号等信息,
contact_id是联系人id号。
version是版本号,用于监听联系人信息是否变化,每修改一次,版本号自增一次。
deleted是删除标志,0为默认,1表示这行数据已经删除。
display_name是联系人名称。
在获取系统通讯录的内容时,就是通过对上面三张表的查询来获得信息的。接下来我们来实现获取通讯录中联系人的信息。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:9279次
    • 积分:162
    • 等级:
    • 排名:千里之外
    • 原创:6篇
    • 转载:5篇
    • 译文:0篇
    • 评论:1条
    文章存档
    最新评论