Android数据库资料
一.联系人和通话记录: 数据库文件/data/data/com.android.providers.contacts/databases/contacts2.db
通话记录的数据存在calls表中; 联系人数据存放在raw_contacts和data表里,两个表构成主从表关系.
1.联系人(contacts2.db)
每个联系人在raw_contacts表里有一条记录,但地址\名称\email\电话等等数据存放在data表中.
(1)mimetypes表
_id mimetype
1 vnd.android.cursor.item/email_v2
2 vnd.android.cursor.item/im
3 vnd.android.cursor.item/nickname
4 vnd.android.cursor.item/organization
5 vnd.android.cursor.item/phone_v2
6 vnd.android.cursor.item/sip_address
7 vnd.android.cursor.item/name
8 vnd.android.cursor.item/postal-address_v2
9 vnd.android.cursor.item/identity
10 vnd.android.cursor.item/photo
11 vnd.android.cursor.item/group_membership
12 vnd.android.cursor.item/website
13 vnd.android.cursor.item/note
(2)data表
字段列表:_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 data_sync2 data_sync3 data_sync4
raw_contact_id:此值对应raw_contacts表的_id值.data表中每个联系人会有多行数据,同一个联系人而言,此值是相同的.
mimetype_id:对应mimetypes表的类型.由mimetypes表可知,data表中的数据,如果mimetype_id值为7表示存的是姓名,5表示存的是号码.
其它信息需要根据mimetype_id指示的类型具体分析
姓名数据:Uri(content://com.android.contacts/data)
Uri对应的宏为:android.provider.ContactsContract.Data.CONTENT_URI
data1字段: 姓名完整名称
data2字段: 名GIVEN_NAME
data3字段: 姓FAMILY_NAME
data4字段: 姓名前缀PREFIX
data5字段: 中间名MID_NAME
data6字段: 姓名后缀SUFIX
data7字段: 名字拼音SUFIX_PINYIN
data8字段: 中间名拼音MID_PINYIN
data9字段: 姓氏拼音FAMILY_NAME_PINYIN
电话数据:Uri(content://com.android.contacts/data/phones)
Uri对应的宏为:android.provider.ContactsContract.CommonDataKinds.Phone.CONTENT_URI
data1字段: 完整的电话号码
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(content://com.android.contacts/data/emails)
Uri对应的宏为:android.provider.ContactsContract.CommonDataKinds.Email.CONTENT_URI
data1字段: 邮箱地址
data2字段: Email类型
Email类型信息如下
TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;
TYPE_MOBILE = 4;
地址数据:Uri(content://com.android.contacts/data/postals)
data2字段: 地址类型
data4字段: 街道
data7字段: 州
data8字段: 城市
data9字段: 邮政编码
地址类型信息如下
TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;
(3)raw_contacts表
_id字段:每行表示一个联系人,与data表raw_contact_id字段对应.
sort_key字段:表示了姓名排序的信息.中文有对应的拼音.可能显示的数据格式为:LI 李 CUN 村
2.通话记录(contacts2.db)
Uri(content://call_log/calls) 对应的宏为:android.provider.CallLog.Calls.CONTENT_URI
name字段: 联系人姓名 CallLog.Calls.CACHED_NAME
number字段:电话号码 CallLog.Calls.NUMBER
date字段: 日期 CallLog.Calls.DATE
type字段: 类型 CallLog.Calls.TYPE
duration字段: 通话时长 CallLog.Calls.DURATION
Android数据库资料的更多相关文章
- 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)
1.Android数据库简单介绍. Android系统的framework层集成了Sqlite3数据库.我们知道Sqlite3是一种轻量级的高效存储的数据库. Sqlite数据库具有以下长处: (1) ...
- 深入解析Sqlite的完美替代者,android数据库新王者——Realm
写在前面: 又到一年一度七夕虐狗节,看着大家忍受着各种朋友圈和QQ空间还有现实生活中的轮番轰炸,我实在不忍心再在这里给大家补刀,所以我觉得今天不虐狗,继续给大家分享有用的. 如果你比较关心androi ...
- [Android Pro] 完美Android Cursor使用例子(Android数据库操作)
reference to : http://www.ablanxue.com/prone_10575_1.html 完美 Android Cursor使用例子(Android数据库操作),Androi ...
- Android 数据库框架OrmLite的使用(一)
在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...
- Android数据库升级
随着Android应用版本的迭代,经常遇到数据库表结构发生改变,或者一些指定的表数据需要更新.这也就引出一个问题Android数据库的更新问题. Android数据库升级分类 Android数据库更新 ...
- [转]Android 学习资料分享(2015 版)
转 Android 学习资料分享(2015 版) 原文地址:http://www.jianshu.com/p/874ff12a4c01 目录[-] 我是如何自学Android,资料分享(2015 版) ...
- 优雅的处理Android数据库升级的问题
原始完成于:2015-04-27 19:28:22 提供一种思路,优雅的处理Android数据库升级的问题,直接上代码: 1 package com.example.databaseissuetest ...
- 【Android开发资料分享】自己整理的Android开发资料,非常全面
学习Android以来,不知不觉中收集了大量非常优秀的Android开发资料,一直没有系统的整理,最近抽时间把收藏夹中的资料做了一下整理,现在分享给大家,希望能够帮助到需要的人.这份资料我还会不断的更 ...
- 我是如何自学Android,资料分享(2015 版)
自己学了两三个月的Android,最近花了一周左右的时间写了个App——Diigoer(已开源),又花了一两周时间找工作,收到了两个Offer,也算是对自己学习的一种认可吧:我刚开始学习总结的——&l ...
随机推荐
- 关于java中的“error: bad operand types for binary operator ”
今天做这个题目的时候(142. O(1) Check Power of 2),遇到一个错误“ bad operand types for binary operator '&' ”. 先贴一下 ...
- [堆+贪心]牛客练习赛40-B
传送门:牛客练习赛40 题面: 小A手头有 n 份任务,他可以以任意顺序完成这些任务,只有完成当前的任务后,他才能做下一个任务 第 i 个任务需要花费 x_i 的时间,同时完成第 i 个任务的时间不 ...
- python 读取 log日志的编码问题
1.我要读取log日志的”执行成功”的个数,log日志编码格式为GBK 2.显示报错,大致意思是说utf-8的代码不能解析log日志 3.后来想想把log日志用GBK编码读出来,写到新文件中,用utf ...
- StreamReader和StreamWriter中文乱码问题
StreamReader和StreamWriter中文乱码问题 1.写入: string FilePath = @"E:\Measure.csv"; StreamWriter w ...
- SIG蓝牙mesh笔记2_mesh组成
目录 SIG 蓝牙 mesh 组成 mesh网络概述 网络和子网 设备和节点 devices & nodes 入网 mesh中的几个概念 智能插座例子 SIG 蓝牙 mesh 组成 mesh网 ...
- Icingaweb2监控oracle数据库的安装配置流程
Icinga2安装配置check_oracle_health流程 1.安装 由于check_oracle_health是使用perl语言编写的,因此在安装该插件之前,首先要安装oracle的客户端实例 ...
- 《javascript模式--by Stoyan Stefanov》书摘--基本技巧
一.基本技巧 1,变量释放的副作用 a.使用var创建的全局变量(在函数外部创建)不能删除. b.不使用var创建的隐含全局变量(尽管在函数内部创建)可以删除. // 定义三个全局变量 var glo ...
- go的IO函数,整理下最基本的IO处理函数,工欲善其事必先利其器
bufio.NewScanner()函数是一行一行地读,但是对/proc/函数,这里不是个好方法,最好是把所有的数据一次读完,然后再去读,有没有这样读的接口呢?把所有数据都读入到内存中然后再通过通过搜 ...
- Sitemesh小记
一.前言 因参与公司框架改造,接触到了Sitemesh这个用于网页布局和修饰的框架,因之前没有接触过(汗颜),但是发现其小巧好用,便以此文记之~ 二.正文 Sitemesh有什么作用呢?我相信很多人在 ...
- 【python】python字符串前面加u,r,b的含义
1.字符串前加 u 例:u"我是含有中文字符组成的字符串." 作用:后面字符串以 Unicode 格式 进行编码,一般用在中文字符串前面,防止因为源码储存格式问题,导致再次使用时出 ...