Android手机通信录项目开发--联系人数据库contacts2.db介绍

项目描述:该项目为基于Android平台的手机通信录,主要模块分为四个部分:联系人管理模块,通话记录管理模块,短信管理模块,系统设置模块。 java

系统结构图以下: android


本项目启动时间:2014年5月28日 sql

说明:本次开发项目的全部源码所有会分享给你们。开发此项目的目的有这几点:1、锻炼独立开发项目的能力,2、增长对Android开发的了解,3、熟悉Android通信录机制。 数据库


闲话很少说,正式开始! 浏览器


技术要点一:熟悉Android联系人数据库contacts2.db ide

1.得到联系人数据库contacts2.db文件 工具

步骤1、打开Eclipse而且运行模拟器; server

步骤2、调出文件浏览器File Explorer(从工具栏中依次打开Windows—>Show View -> Other -> Android - > File Explorer),如图所示: sqlite


步骤3、打开文件浏览器,并在此目录data->data->com.android.providers.contacts->databases下,找到数据库:contacts2.db,注意:若是是想导出真机上的contacts2.db数据库,真机必须是通过root之后才能导出,不然在data目录层就打不开。 ip


步骤4、选中contacts2.db,而且在File Explorer的右上角,选择导出键,将contacts2.db数据库导入到电脑上。


步骤5、下载数据库可视化软件,用来帮咱们打开contacts2.db,查看其中的表结构,这里我推荐使用sqlitestudio,附上下载连接:连接地址

步骤6、安装sqlitestudio,安装成功后,打开软件并导入contacts2.db数据库


步骤7、双击Contacts2数据库,就能看到Contacts2.db里面全部的表

步骤9、双击data表,查看表的结构


步骤10、点击工具栏上方的数据,就能够查看表中的内容



2.介绍contacts2.db数据库

有关通信录的资料都放在contacts2.db中这个数据库中,本次项目开发主要使用到的表分别以下:


contacts表

Contacts表是对raw contact表按照account type和account name进行的聚合,Contacts表的聚合逻辑在ContactAggregator.java文件中。

结构图以下:


数据图以下:



raw_contacts表

raw_contacts表描述了联系人每一个帐户下的数据,根据帐户名和帐户类型字段进行区分。即同一个联系人可能在raw_contact表中有多个记录,每一个记录分属于不一样的帐户。因此一个contact_id可能对应多个raw_contact id,为何一个contact_id会对应多个raw_contact_id,相信读者看到这里就会知道该问题的答案了。从这里咱们也发现android是容许一个联系人绑定多个帐户的。

须要注意的字段为ACCOUNT_NAME,ACCOUNT_TYPE,DELETED、VERSION。

ACCOUNT_NAME和ACOUNT_TYPE我就不详细描述了,DELETED标志位的做用是,当删除一条用户记录时,能够暂时再内部维护一条删除状态的记录,待该帐户的server端删除完毕后,再从本地删除,其实用户能够没必要关心该字段的内部机制,只须要注意在查询raw contact表时,能够根据DELETED字段过滤掉已删除的记录。VERSION字段也是一个颇有用的字段,能够根据该字段来肯定联系人信息是否发生变化,若是您本地保存了联系人信息,那么就能够根据VERSION信息来和系统数据库的联系人信息进行比较,来肯定是否须要作UPDATE操做。

结构图以下:


数据图以下(两张图合并起来):





data表

data表存储了联系人的具体信息,好比电话、email等信息,从下面的图咱们能够看书每一个raw contact表中的记录会对应多个data信息,这不难理解,一个联系人可能有多个电话号码,多个email,这些信息是如何存储在data表中的呢?其实不难解决这个问题,定义一个专门的描述字段用来定义该记录的类型,即MIME TYPE,而后根据MIME TYPE来区分该记录的类型,而后每种信息都会有一个本身的类型。

结构图以下:


数据以下(两张图合并起来):





calls表

calls表主要做用是用来存放通话记录,主要使用到这些字段date(日期),number(电话号码),type(通话记录类型),name(联系人姓名)。

结构图以下:


数据图以下(两张图合并起来):





其中以上表中,contacts表,raw_contacts表,data表之间的关系以下图所示:


这三张表是联系人数据库的最主要的数据表,其余的数据只是提供一些辅助功能,咱们先详细介绍这三张表的结构和使用方法。 从上图咱们能够看书contacts表和raw_contact表是一对多的关系,contacts表是对raw_contact表记录的聚合,即contacts表中是没有帐户(Account)的概念的,而raw_contact表是联系人特定帐户的的概要信息,Data表则存储了联系人的详细信息,好比email、电话号码等。

相关文章
相关标签/搜索