Android系统联系人数据库深度解析:ContactProvider详解
4星 · 超过85%的资源 需积分: 16 88 浏览量
更新于2024-07-27
1
收藏 544KB PDF 举报
"对ContactProvider的深入解析,包括其在Android2.2系统中的数据库结构,主要涉及data、raw_contacts和contacts三个关键表"
在Android系统中,ContactProvider是用于管理和存储用户联系人信息的核心组件。它是一个内容提供者(Content Provider),使得其他应用程序能够读取、写入或修改用户的联系人数据。这篇介绍主要针对Android2.2版本的ContactProvider,通过分析其数据库contacts2.db来理解其工作原理。
系统联系人数据库位于"data\data\com.android.providers.contacts\databases\"路径下,其中包含一个名为contacts2.db的SQLite数据库。这个数据库包含了多个表,但其中最重要的三个表是"data"、"raw_contacts"和"contacts"。
1. data表
这个表存储了联系人具体的详细信息,例如电话号码、姓名、电子邮件等。每行数据代表一个联系人的一个特定信息。表结构包含如下字段:
- `_id`:主键,每个数据行的唯一标识
- `package_id`:引用`package`表,表示数据所属的包
- `mimetype_id`:引用`mimetype`表,定义数据的类型(如电话、邮箱等)
- `raw_contact_id`:引用`raw_contacts`表,标识该数据属于哪个联系人
- `is_primary`和`is_super_primary`:标识数据是否为主信息和超级主信息
- `data_version`:数据的版本号,用于跟踪更新
- `data1`至`data15`:实际存储的数据,`data1`是最常用字段,通常用于查询筛选
2. raw_contacts表
此表代表原始联系人,每个条目对应一个独立的联系人实体,即使该联系人可能有多个数据项(如多个电话号码)。表结构包括:
- `_id`:主键,每个原始联系人的唯一标识
- `contact_id`:引用`contacts`表,表示联系人的全局唯一标识
- `account_name`和`account_type`:关联的账户名称和类型
- `dirty`:标记联系人是否已修改
3. contacts表
这个表是联系人的汇总视图,将多个`raw_contacts`聚合为一个联系人。每个条目表示一个在用户界面显示的联系人。它包含:
- `_id`:主键,全局唯一的联系人标识
- `lookup_key`:用于快速查找联系人的键
- `starred`:标记联系人是否被星标
- `has_phone_number`:标识联系人是否有电话号码
通过这三个表的交互,ContactProvider能够高效地管理并提供联系人数据。应用程序可以使用ContentResolver接口与ContactProvider进行交互,执行查询、插入、更新和删除操作,从而实现对用户联系人数据的访问和管理。
了解这些核心表的结构和关系对于开发涉及联系人管理的Android应用至关重要,可以帮助开发者更有效地处理和展示联系人信息。同时,这种设计也允许系统根据用户的不同账户(如Google账户、SIM卡账户等)管理和同步联系人,提供了高度的灵活性和可扩展性。
2014-12-18 上传
点击了解资源详情
点击了解资源详情
2024-11-15 上传
2024-11-15 上传
a345017062
- 粉丝: 1532
- 资源: 10
最新资源
- Java集合ArrayList实现字符串管理及效果展示
- 实现2D3D相机拾取射线的关键技术
- LiveLy-公寓管理门户:创新体验与技术实现
- 易语言打造的快捷禁止程序运行小工具
- Microgateway核心:实现配置和插件的主端口转发
- 掌握Java基本操作:增删查改入门代码详解
- Apache Tomcat 7.0.109 Windows版下载指南
- Qt实现文件系统浏览器界面设计与功能开发
- ReactJS新手实验:搭建与运行教程
- 探索生成艺术:几个月创意Processing实验
- Django框架下Cisco IOx平台实战开发案例源码解析
- 在Linux环境下配置Java版VTK开发环境
- 29街网上城市公司网站系统v1.0:企业建站全面解决方案
- WordPress CMB2插件的Suggest字段类型使用教程
- TCP协议实现的Java桌面聊天客户端应用
- ANR-WatchDog: 检测Android应用无响应并报告异常