android 联系人 代码主要分布在四个地方(有的代码会有关于sim卡的加载,各个平台实现方式不同,就不提了):

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下面 legacyapisupport 将字段插入到数据库:

新建一个 contentprovider  mvalues4

mvalues3.clear();

contactsprovider2.java

将该字段添加到 handlermap里面

创建一个class Redday 具体也是一些字段定义之类的,不提了

接下来就是 contactscommon下面将该字段添加进来

创建reddaydataitem 封装下 字段:

dataitem 将该对象加进来

代码太多了,不贴了,我去,

说下思路,以便下次复习:

rawcontactmodifier.java 将 redday 字段加进 字段列表里面

进行 该字段的赋值,以便显示出该字段对应的数据库内容

baseaccounttype 添加对redday字段的处理

其他type 比如 phoneaccounttype 如果需要该字段 只需添加

adddatakindredday(context);

最后 就是contacts 里面了

这里很简单:

在quickcontactactivity里面显示的时候添加 对redday字段的判读,并显示即可。

其他界面均不用添加,因为其他界面调用的处理代码都在contactscommon里面。

基本流程就是这些,折腾死我了。刚刚添加好,需求又取消了。要求代码回退,代码以后再也看不到了,这里做下标记,以对得起我辛勤的付出。

这个是5.1的系统。



android联系人源码分析,android 联系人源码分析 新字段的添加流程相关推荐

  1. 通过源码分析Android 的消息处理机制

    2019独角兽企业重金招聘Python工程师标准>>> #通过源码分析Android 的消息处理机制 我们知道,Android应用是通过消息来驱动的,每一个进程被fork之后,都会在 ...

  2. Android10.0 日志系统分析(三)-logd、logcat读写日志源码分析-[Android取经之路]

    摘要:本节主要来讲解Android10.0 logd.logcat读写日志源码内容 阅读本文大约需要花费20分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Andro ...

  3. 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )

    Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...

  4. 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )

    Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...

  5. 【Android 电量优化】JobScheduler 相关源码分析 ( ConnectivityController 底层源码分析 | 构造函数 | 追踪任务更新 | 注册接收者监听连接变化 )

    文章目录 一.ConnectivityController 连接控制器引入 二.ConnectivityController 构造方法解析 ( 注册接收者 ) 三.mConnectivityRecei ...

  6. 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★

    文章目录 一. 常用的耗时方法优化方案 ( 重要 ) 二. 源码分析梳理 1. 应用启动时间计算相关源码分析 2. Launcher 应用中启动 Android 应用流程 三. 启动白屏解决方案 An ...

  7. 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析

    预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 grad ...

  8. 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析

    预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 grad ...

  9. 源码分析Android Handler是如何实现线程间通信的

    源码分析Android Handler是如何实现线程间通信的 Handler作为Android消息通信的基础,它的使用是每一个开发者都必须掌握的.开发者从一开始就被告知必须在主线程中进行UI操作.但H ...

最新文章

  1. YOLOv5训练量化压缩
  2. python中re的安装步骤_Python中requent库的安装与卸载【原创】
  3. python多包运行_如何组织包含多个包的python项目,以便包中的每个文件仍然可以单独运行?...
  4. python如何统计字典里面健的数量_Python中使用Counter进行字典创建以及key数量统计的方法...
  5. 无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...
  6. 计算机课有什么作业,计算机课作业~
  7. Python之每个人都应该知道的30个一行代码程序
  8. 0/1背包问题-----回溯法求解
  9. 【DS】时间复杂度排序
  10. dockerq启动报错(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --t
  11. 第2课:关闭被黑客扫描的端口
  12. mongodb的delete_大数据技术之MongoDB数据删除
  13. 整数分解为若干项之和python_SVD奇异值分解及Python实例
  14. python主流测试框架的简介
  15. 数学建模笔记——评价类模型(二)
  16. MW6MaxiCode ACX溢出
  17. 亚马逊网络关联是什么
  18. 转帖-[教程] Win7精简教程(简易中度)2016年8月-0day
  19. 数据挖掘-泰坦尼克号生存数据分析
  20. java channel midi_为Java程序中添加播放MIDI音乐功能

热门文章

  1. Spark算子:统计RDD分区中的元素及数量
  2. js创建,删除,读取文件目录_note
  3. another mysql daemon_MySQL错误Another MySQL daemon already running with the same unix socket.
  4. linux python 环境 png,在mint-15 linux上显示python的.png图像
  5. 作为文本内容空格的HTML标签,HTML.fromHtml在文本末尾添加空格?
  6. python制作的游戏如何转化为swf_如何从python生成swf格式的幻灯片?
  7. 获取页眉值vba_VBA抓取股票历史数据的整体表处理
  8. uniapp同步获取用户信息_表单设计是为了帮助用户获取信息,而不是填写
  9. php pdo 新建数据库,php – 使用PDO数据库类而不是每次都创建新...
  10. android 简单json,Android JSON数据简单处理