今天看了一下 android手机内的通讯录数据库,简单的汇总了一下。

数据库见附件中的contacts2.db , 里面一共有40个表,34个视图,很庞大,挑几个重点的看一下。

1.表Raw_contacts

假定设备上有2个账户:

· Neroseagate3@gmail.com

· Neroseagate@gmail.com

这两个账户里面都有 联系人“GG”,导出的数据如下

注意头两列,第一列将会和下面的表关联,第二列关联Account

第一个 [酷派客服热线]是手机自带的。

中间两条是同步下来的。

最后一个是从手机上添加的。

这个表的作用 就是存储原生数据以及同步的配置项。

2.Data 表

详细的数据存放在data中,用主键关联raw_Data。

注意 raw_contact_id 是用来关联上一个表的, mimeType_id 是指不同的数据类型,data1-data15是用来存储数据的

_id

package_id

mimetype_id

raw_contact_id

is_read_only

is_primary

is_super_primary

data_version

data1

data2

data3

data4

data5

data6

data7

data8

data9

data10

data11

data12

data13

data14

data15

data_sync1

23

 

7

5

0

0

0

0

                             

https://www.google.com/m8/feeds/photos/media/neroseagate3%40gmail.com/1a6e03a18abfdb19

24

 

6

5

0

0

0

1

GG

GG

             

1

3

         

25

 

11

5

0

0

0

1

                               

26

 

10

5

0

0

0

1

                               

27

 

15

5

0

0

0

1

             

4

5

             

29

 

8

5

0

0

0

1

5

                             

30

 

5

5

0

0

0

1

13372576188

2

 

8.6134E+12

                       

31

 

16

5

0

0

0

1

www.cnblogs.com

3

                           

32

 

17

5

0

0

0

0

1972/12/18

3

                           

33

 

2

5

0

1

0

1

home@1.com

1

                           

34

 

8

5

0

0

0

0

6

                             

35

 

4

5

0

0

0

0

江西,中囿

1

         

江西_

 

中国

           

MimeType 的值如下:

_id

mimetype

1

vnd.android.cursor.item/cpother

2

vnd.android.cursor.item/email_v2

3

vnd.android.cursor.item/im

4

vnd.android.cursor.item/postal-address_v2

5

vnd.android.cursor.item/phone_v2

6

vnd.android.cursor.item/name

7

vnd.android.cursor.item/photo

8

vnd.android.cursor.item/group_membership

9

vnd.android.cursor.item/organization

10

vnd.android.cursor.item/nickname

11

vnd.android.cursor.item/note

12

vnd.android.cursor.item/sns

13

vnd.android.cursor.item/sip_address

14

vnd.android.cursor.item/identity

15

vnd.com.google.cursor.item/contact_misc

16

vnd.android.cursor.item/website

17

vnd.android.cursor.item/contact_event

另外data1-data15 有不同的用途

名字:

Uri: Uri.parse("content://com.android.contacts/data")

PREFIX = "data4"; //名称前缀
MID_NAME = "data5";//中间名
GIVEN_NAME = "data2";//名字
FAMILY_NAME = "data3";//姓氏
MID_PINYIN="data8"; //中间名拼音
String FAMILY_NAME_PINYIN="data9"; //姓氏拼音
String SUFIX = "data6"; //名称后缀
String SUFIX_PINYIN="data7"; //名字拼音

电话:

Uri: Uri.parse("content://com.android.contacts/data/phones"

phone: "data1";//号码

Type: "data2";//这个字段是整形值,指示电话类型

类型对应关系如下:

TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_MOBILE = 2;
TYPE_WORK = 3;
TYPE_FAX_WORK = 4;
TYPE_FAX_HOME = 5;
TYPE_PAGER = 6;
TYPE_OTHER = 7;

Email

Uri:Uri.parse("content://com.android.contacts/data/emails")

Email: "data1";//邮箱地址

Type: "data2";//这个字段是整形值,指示Email类型

类型对应关系如下:

TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;
TYPE_MOBILE = 4;

地址:

Uri:Uri.parse("content://com.android.contacts/data/postals")

STREET="data4";//街道
CITY="data8";//城市
STATE="data7";//州
ZIP_CODE="data9";//邮政编码

Type:"data2";//type的类型如下

TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;

3.表Contacts

这张表,按照google的意思,合并raw_contacts里面的同名联系人,如下图所示,

可是,我看到的并不是这样子, 对比第一个表,貌似没有合并,只是一个简单的汇总信息表。

_id

name_raw_contact_id

default_tel

single_is_secret

photo_index

send_to_voicemail_vt

send_to_voicemail_sip

indicate_phone_or_sim_contact

index_in_sim

filter

is_sdn_contact

1

1

76923075280

0

5

0

0

-1

-1

0

0

3

5

13372576188

0

4

0

0

-1

-1

0

0

6

6

15906879563

0

7

0

0

-1

-1

0

0

7

7

133

0

6

0

0

-1

-1

0

0

参考资料

http://developer.android.com/guide/topics/providers/contacts-provider.html

http://blog.csdn.net/xys289187120/article/details/6730957

http://www.cnblogs.com/lw900320/archive/2013/01/10/2855145.html

附件( http://files.cnblogs.com/xiaokang088/db.zip)是 从手机里面提取出来的数据库和 转化的excel。

android手机内的通讯录数据库的更多相关文章

  1. 判断在Android手机内, 页面重新刷新一次

    <script type="text/javascript"> var UA = navigator.userAgent.toLowerCase(); //androi ...

  2. 用FileExplorer查看android手机中的数据库

    想查看一下手机中的通讯录数据库,google之后找到了办法. 参考: http://stackoverflow.com/questions/4867379/android-eclipse-ddms-c ...

  3. [转]设置Android手机以使用ARM Streamline进行性能分析(一)

    本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址     Posted by Fang Bao,(鲍方) 4 Comments 11 J ...

  4. Android开发环境下关于如何导出手机通讯录数据库【Written By KillerLegend】

    首先度Linux中的权限(Permissions)进行一些说明: permissions一共有10个符号位,[- --- --- ---],在这里我们从左至右由0开始编号,各个符号位的编号分别为0,1 ...

  5. Android 操作手机内置存储卡中的文件

    场景:需要读取指定文件的内容,此文件是手动存储到手机内置存储卡中的,且手机上不存在SD卡. 对于android通过activity提供的openFileOutput和openFileInput可以直接 ...

  6. 如何使用 sqlite3 访问 Android 手机的数据库

    如何设置Android手机的sqlite3命令环境 http://www.cnblogs.com/linjiqin/archive/2011/11/28/2266619.html SQLite3 为a ...

  7. 腾讯优测干货精选|Android双卡双待适配——隐藏在数据库中的那些秘密

    腾讯优测是专业的app自动化测试平台,除了提供兼容性测试,远程真机租用等多维度的测试服务,还有优分享-腾讯内部的移动研发测试干货精选~ 许多APP都希望获取用户通讯录联系人,利用通讯录关系链信息来丰富 ...

  8. 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#

    欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...

  9. Android获取内置sdcard跟外置sdcard路径

    Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...

随机推荐

  1. 百度地图Api进阶教程-地图鼠标左右键操作实例和鼠标样式6.html

    <!DOCTYPE html> <html> <head> <meta name="viewport" content="ini ...

  2. linq操作符:元素操作符

    元素操作符仅返回一个元素. 一.Fitst操作符 First操作符将返回序列中的第一个元素.如果序列中不包含任何元素,则First<T>方法将引发异常.来看看First()方法的定义: 从 ...

  3. oozie 入门

    转自:http://blackproof.iteye.com/blog/1928122 oozie概述:oozie能干什么 oozie格式:怎么用oozie oozie执行:怎么运行oozie ooz ...

  4. vb 三种启动模式

    正常启动不用说了 就是虚拟机和显示部分在同一个程序里进行 直接关闭程序 就都关闭了 相当于我们普通的电脑, 有主机和显示器无界面启动 也很好理解 ,就是在后台启动虚拟机,如同服务器, 我们只有一个主机 ...

  5. python 进行后端分页详细代码

    后端分页 两个接口 思路: 1. 先得到最大页和最小页数(1, 20) --> 传递给前端, 这样前端就可以知道有多少个页数 2. 通过传递页数得到当前页对应数据库的最大值和最小值 3. 通过s ...

  6. C# 初学

    突然对C#充满了兴趣,于是兴致勃勃的折腾起来. 下面是折腾的过程: IDE,我选择了vs2017,不过这货的安装选项略多,对于新手来说各种坑.无论如何,选择”.NET桌面开发”即可,其他的全部留空. ...

  7. 第三百八十二节,Django+Xadmin打造上线标准的在线教育平台—xadmin管理员详情页面布局,导航图标设置

    第三百八十二节,Django+Xadmin打造上线标准的在线教育平台—xadmin进阶 1.后台管理员详情页面布局 后台管理员详情页面,区块是可以拖动的,而且分为了很多个区块 这个页面的布局在xadm ...

  8. e612. Moving the Focus to the Next or Previous Focusable Component

    The methods to move the focus to the next or to the previous focusable component are Component.trans ...

  9. ubuntu -- 安装最新版的nodejs

    1.安装最新的nodejs和npm # apt-get update # apt-get install -y python-software-properties software-properti ...

  10. Android 开发规范

    一. 总包命名规范: 1. 主程序:com  . 公司简写 . 项目名称简写 如彩票主程序: com.whszzy.caipiao 2. 独立模块:com . 公司简写 . 项目名称简写 . 模块名称 ...