android系统自带通讯录的深度研究

本文深入解析Android系统自带的contact2.db数据库中的数据存储结构,包括主要表的数据分类、重要字段的解释及其作用,以及如何通过raw-contacts表查询联系人数据。重点介绍了data表中的关键字段,如Mimetype_id、raw_contact_id、Data1和Data2的含义,并举例说明如何通过这些字段获取联系人数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先看2张图:

第一张效果图,本人对一个联系人经行了多种数据的添加,基本上讲系统自带的各种数据形式,比如电话,单位,邮件,都添加了一次


第二张图,系统自带的通讯录联系人的db数据库中的数据图:


第二张图就是第一张图在数据库中保存的数据。

数据是从33到62行的,45行数据不是空的,数据在data15的字段上保存的,由于屏幕大小问题后面的字段没有截全,但后面的字段除了data15表示联系人的图像,其他的完全看不懂。

 

在android系统自带的contact2.db数据库中有3个主要的表,分别是data,mimetypes,

raw-contacts,

 

data :该表负责保存各种联系人的数据等等

raw-contacts:该表能对数进行联系方面的过滤

mimetypes:该表能对数进行数据类别方面的过滤

 

在android4.0中mimetypes在数据库中的数据如下:


这里表示了数据的类别。

 

在data表中有几个重要的字段说一下:

Mimetype_id:这个字段表示这一行数据(确切的说是data1的数据)在mimetypes表中的数据类别id

raw_contact_id:这个字段表示这一行的数据(确切的说是data1的数据)是属于哪个联系人的。

Data1:这个字段存放所有的数据

Data2:这个表示data1中数据的具体类别,mimetypes中主要表示的大类别,比如是电话还是地址,邮件。而data2是对data1的进一步修饰比如单位电话,家庭电话。

 

目前已知的data2的值(只是指当mimetypes的大类别是电话号码的时候)及含义如下:

1:住宅电话

2:手机号

3:单位电话

5:住宅传真

6:寻呼机

7:其他

17:单位手机

18:单位寻呼机

19:助理

20:彩信

 

如果mimetypes的大类别不是电话号码就的另外分析了。其实从上面两张图经行比对也能看出来

 

 

如果data2是0的话,注意是0不是null,那么就是自定义的小类型

而data3就是自定义的小类型的名字,比如你该联系人添加一个“工作专用号”

那么这个data3中就存放这个  工作专用号

 

下面举个例子:

比如我们现在知道了,联系人的名字叫“wangwu”,这时候我们就可以通过raw-contacts表查询出这个联系人是第几个联系人,也就是raw-contacts表中的_id字段,即data表中的r

raw_contact_id字段,这个字段表示联系人的一个编号,那么该联系人的数据就和这个编号绑定了,通过这个编号就能找到 wangwu这个联系人的其他数据。

 

在mimetypes中表示电话号码的id是5,所以可以根据raw_contact_id,Mimetype_id,可以查询data1字段获得大类别下的数据,如果电话号码有好多,还需要按照上面的data2经行筛选,如果data2为0,则根据data3就行小内别的筛选。



评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值