Contacts源码分析(一、概述)

本文介绍了Android Contacts应用的内部结构及数据库设计。主要内容包括Log开关配置、应用由Contacts、ContactsCommon和ContactsProvider三个部分组成,以及数据库中关键表的说明。
摘要由CSDN通过智能技术生成

代码版本: Contact code version: 4.4.2

 

一 打开Log开关:

if (Log.isLoggable(Constants.PERFORMANCE_TAG, Log.DEBUG)) {
Log.d(Constants.PERFORMANCE_TAG, "PeopleActivity.onCreate start");
}

打开: adb shell setprop log.tag.ContactsPerf VERBOSE
该属性值取值顺序为【V,D,I,W,E,A,S】 A表示最高级别的日志,即assert;S表示Suppress,即停止该日志的输出。
次设置重启后实效,也可以将该属性添加在data/local.prop属性文件中,不同的是,只要存在local.prop,该手机重启与否都一样,可以打印VERBOSE


二 Contact代码结构
主要由Contacts, ContactsCommon, ContactsProvider三个工程组成

1. Conctacts: UI, 用户交互逻辑
文件目录
packages/apps/Contacts

2. ContactsCommon: 实现了基类, 工具类和一些数据结构供Contacts使用
文件目录
packages/apps/ContactsCommon

3. ContactsProvider: 联系人数据增删改
文件目录
packages/providers/ContactsProvider


三 数据库结构:

device中存放位置
/data/data/com.android.providers.contacts/databases

contacts2.db : 所有联系人信息
profile.db : 个人信息


1. contacts2.db 中几个重要的表, 跟profile db中表结构差不多
可以添加几个联系人然后把db文件下载下来用SQLiteSpy查看

1) accounts

用于同步contact的账号相关信息

2) contacts

联系人表, 每个联系人对应一行, 只存放一些标志性信息如raw contact id, starred, timestamp等, 具体联系人信息存放在raw_contact和data表中。

不可以直接向此表中插入数据, 用户插入操作通常更改raw_contact表, 然后系统自动merge信息到contact表

3) data

 详细信息存放在这个表里, 如联系人姓名, 号码, 地址, 邮箱, 组织等, 

信息的类别用mimetype_id来指明, 通过引用raw_contact_id关联到raw_contacts

4) raw_contacts


比contact表更多的信息,很多标志信息, 主要的数据增删改是操作这个表。
与contact表不同的是, 一个联系人(contact_id) 可以对应多行数据, 比如这个联系人存放在多个账户上(account_id)

5) mimetype

索引信息类别, 用于data表


2. 主要视图

1)view_contacts

2) view_data

3) view_raw_contacts

4)view_entities

 

参考文章

Android 5.0 Contacts源码分析 http://blog.csdn.net/lsmfeixiang/article/details/44856569

转载于:https://www.cnblogs.com/hushpa/p/5616599.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值