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

在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
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值