代码版本: 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

最新文章

  1. ha456.jar打开dump文件报Unsupported major.minor version 51.0异常
  2. Effective Java 39 Make defensive copies when needed
  3. MongoDB分片集群还原
  4. 黄聪:Mysql数据库还原备份提示MySQL server has gone away 的解决方法(备份文件数据过大)
  5. node 搭建开发框架express
  6. Ubuntu系统中初次下载Android源码的一点经验
  7. postman 第5节 Runner的使用(转)
  8. tomcat部署公共jar包
  9. java入门-day02
  10. dubbo支持哪些通信协议和序列化协议
  11. h5 rem js自动适配
  12. 菜鸟在ubuntu 16.04下制作am335x的SD卡启动盘反思
  13. 挂载银行前置机Ukey到windows server2012虚拟机的操作记录
  14. sublime 自定义快捷代码
  15. linux下数学函数
  16. (转)微信小程序开发—弹出框
  17. java基础41 枚举(类)
  18. python 开发在线音乐播放器-简易版
  19. CentOS6.5 重启网络报错:Bringing up interface eth0: Error: Connection activation failed: Device not managed by NetworkManager or unavailable
  20. jar命令:打包、查看、更新等

热门文章

  1. Java中gson的使用
  2. Django之ORM多表操作
  3. c/c++ explicit用法
  4. 新的开始 | Arthas GitHub Star 破万后的回顾和展望
  5. Django项目:CRM(客户关系管理系统)--32--24PerfectCRM实现King_admin自定义操作数据
  6. mybatis深入理解(八)-----关联表查询
  7. tesseract训练手写体
  8. JavaBean与Map的相互转换
  9. oracle-PL/SQL2
  10. 2019-9-2-C#判断文件是否被混淆