android 联系人源码分析 新字段的添加流程
先大致分析下表的结构 账户表 contacts --- 联系人表rawcontacts --- 联系人详细数据表 data 依此是一对多的关系。
我们要加的字段就是新增一个字段及其相关字段(minitype,data1等) 到data表里,关联上rawcontacts contacts即可。
android 联系人 代码主要分布在四个地方:
1 framwork/base/core/java/android/provider/
framwork下面主要是系统公用的数据字段
比如: framwork/base/core/java/android/provider/contacts.java
里面会有一些 联系人数据库里面的 字段: notes,email,name
2 packages/providers/contactsprovider/
providers 下面 主要是 数据库表的创建和增删查改的操作
增删查改主要是在 contactsprovider2.java里面
3 packages/apps/contacts
contacts下面则主要是联系人的显示。
而具体的操作好多都是调用 contactscommon里面的view 或 方法。
4 packages/apps/contactscommon
contactscommon下面主要是一些表的通用操作,自定义view。比如联系人 邮箱字段的显示,添加操作
下面就以 添加一个 生日字段为例 来 梳理下 整个流程。
1 framwork 下面 添加 字段
contacts下面:
contactscontract下面:
下面 进入 provider
contactsprovider2 会对datarowhandler 进行数据的增删查找,我们只需继承复写一个并将其加入进来
下面 legacyapisupport (应该是对之前版本及不兼容接口的再处理,就没咋动)
接下来就是 contactscommon
这里的联系人的每一行对应一个dataitem 我们要继承这个dataitem
账户基类 需要添加对这个字段的支持 BaseAccountType
并看看是否所有的账户都需要显示这个字段,然后个个账户自行配置该字段
最后 就是contacts 里面了
这里需要对新增加的字段显示,QuickContactActivity 里面 dataitemToEntry 方法里增加对该数据的判断并进行显示。
更多相关文章
- Content Provider初谈和Android联系人信息
- android 数据库 SQLiteOpenHelper和ContentProvider学习笔记---
- Android中ps命令各字段的含义
- Android-->获取所有联系人以及所有的字段(联系人头像,邮箱,地址,
- 怎么去掉联系人、通话记录、拨号列表界面中的电话号码中间的空格
- android 获取手机中的联系人
- 转:Android之通信录中的联系人操作
- Android之通信录中的联系人操作