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

来源:互联网 发布:电力软件开发 编辑:程序博客网 时间:2024/04/28 04:15

先看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就行小内别的筛选。



原创粉丝点击