android手机内的通讯录数据库
今天看了一下 android手机内的通讯录数据库,简单的汇总了一下。
数据库见附件中的contacts2.db , 里面一共有40个表,34个视图,很庞大,挑几个重点的看一下。
1.表Raw_contacts
假定设备上有2个账户:
这两个账户里面都有 联系人“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 |
3 |
||||||||||||||||
|
32 |
17 |
5 |
0 |
0 |
0 |
0 |
1972/12/18 |
3 |
|||||||||||||||
|
33 |
2 |
5 |
0 |
1 |
0 |
1 |
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手机内的通讯录数据库的更多相关文章
- 判断在Android手机内, 页面重新刷新一次
<script type="text/javascript"> var UA = navigator.userAgent.toLowerCase(); //androi ...
- 用FileExplorer查看android手机中的数据库
想查看一下手机中的通讯录数据库,google之后找到了办法. 参考: http://stackoverflow.com/questions/4867379/android-eclipse-ddms-c ...
- [转]设置Android手机以使用ARM Streamline进行性能分析(一)
本博客第一次转载的文章,原文访问不到了,这篇是从google cache里挖出来的,为有需要的同学准备.原文地址 Posted by Fang Bao,(鲍方) 4 Comments 11 J ...
- Android开发环境下关于如何导出手机通讯录数据库【Written By KillerLegend】
首先度Linux中的权限(Permissions)进行一些说明: permissions一共有10个符号位,[- --- --- ---],在这里我们从左至右由0开始编号,各个符号位的编号分别为0,1 ...
- Android 操作手机内置存储卡中的文件
场景:需要读取指定文件的内容,此文件是手动存储到手机内置存储卡中的,且手机上不存在SD卡. 对于android通过activity提供的openFileOutput和openFileInput可以直接 ...
- 如何使用 sqlite3 访问 Android 手机的数据库
如何设置Android手机的sqlite3命令环境 http://www.cnblogs.com/linjiqin/archive/2011/11/28/2266619.html SQLite3 为a ...
- 腾讯优测干货精选|Android双卡双待适配——隐藏在数据库中的那些秘密
腾讯优测是专业的app自动化测试平台,除了提供兼容性测试,远程真机租用等多维度的测试服务,还有优分享-腾讯内部的移动研发测试干货精选~ 许多APP都希望获取用户通讯录联系人,利用通讯录关系链信息来丰富 ...
- 将Android手机打造成你的Python开发者桌面#华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- Android获取内置sdcard跟外置sdcard路径
Android获取内置sdcard跟外置sdcard路径.(测试过两个手机,亲测可用) 1.先得到外置sdcard路径,这个接口是系统提供的标准接口. 2.得到上一级文件夹目录 3.得到该目录的所有文 ...
随机推荐
- 快速理解RequireJs(转)
RequireJs已经流行很久了,我们在项目中也打算使用它.它提供了以下功能: 声明不同js文件之间的依赖 可以按需.并行.延时载入js库 可以让我们的代码以模块化的方式组织 初看起来并不复杂. 在h ...
- PHP——安装wampserver丢失MSVCR110.dll
win8系统 64位,在安装wampserver时显示计算机丢失MSVCR110.dll 1.首先是打开浏览器,在浏览器的地址栏里输入 http://www.microsoft.com/zh-CN ...
- mybatis配置进阶
结果集的列比resultMap多会报错么?不会,只映射resultMap中有的列. 结果集的列比resultMap少会报错么?不会,只映射结果集中有的列. 高级结果映射 resultMap ...
- Extjs4.x TreeGrid Dirty 更新数据,dirty标记不会自动清除的bug
如上图所示,当修改某个属性值,成功提交后,dirty的小三角不会自动清除,这个是官方treegrid的一个bug,目前尚未解决. bug:http://www.sencha.com/forum/sho ...
- matlab std函数 用法及实例
MATLAB常常用到std函数来进行标准差计算,下面我就通过实例介绍一下 matlab std函数怎么用. 1. std函数是用来计算标准偏差的一个函数,由于其有不同的参数,我们就用下面的例子进行介绍 ...
- ssh远程服务器
使用用户名密码登录 在命令行中输入命令: ssh username@ip_address -p port 之后系统会提示输入密码,输入后即可登录 如果不添加-p选项,则默认是22端口 还可以使用-l选 ...
- Textrank权值提取文本标签提取:
Textrank权值提取文本标签提取: 我已经爬取到了指定博主的新浪微博,然后我想从微博中提取出可以代表该博主兴趣特征的100个关键词,然后由这100个关键词提取出10个标签,代表博主的兴趣.我们此处 ...
- USB学习笔记连载(十六):USB数字签名
转载:http://blog.chinaaet.com/crazybingo/p/34487 曾记得在最开始安装驱动程序的时候出现过这个错误....但是最近我在别的电脑安装的时候又不出现这个错误了.. ...
- USB学习笔记连载(十一):CY7C68013A的启动方式-EEPROM
上述的应用笔记中有介绍FX2LP的启动选项,主要包括I2C启动和USB启动. 说白了I2C启动需要使用外部的EEPROM,USB启动,只是使用上位机控制软件将配置程序FX2LP中,不用EEPRO ...
- ecmall数据库表详解 二次开发必备
文章分类表ecm_acategory 字段 类型 Null 默认 注释 cate_id int(10) 否 自增ID号,分类ID号 cate_name varchar(100) 否 分类的名称 ...