android联系人源码分析,android 联系人源码分析 新字段的添加流程
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 联系人源码分析 新字段的添加流程相关推荐
- 通过源码分析Android 的消息处理机制
2019独角兽企业重金招聘Python工程师标准>>> #通过源码分析Android 的消息处理机制 我们知道,Android应用是通过消息来驱动的,每一个进程被fork之后,都会在 ...
- Android10.0 日志系统分析(三)-logd、logcat读写日志源码分析-[Android取经之路]
摘要:本节主要来讲解Android10.0 logd.logcat读写日志源码内容 阅读本文大约需要花费20分钟. 文章首发微信公众号:IngresGe 专注于Android系统级源码分析,Andro ...
- 【Android 事件分发】ItemTouchHelper 事件分发源码分析 ( 绑定 RecyclerView )
Android 事件分发 系列文章目录 [Android 事件分发]事件分发源码分析 ( 驱动层通过中断传递事件 | WindowManagerService 向 View 层传递事件 ) [Andr ...
- 【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )
Android 插件化系列文章目录 [Android 插件化]插件化简介 ( 组件化与插件化 ) [Android 插件化]插件化原理 ( JVM 内存数据 | 类加载流程 ) [Android 插件 ...
- 【Android 电量优化】JobScheduler 相关源码分析 ( ConnectivityController 底层源码分析 | 构造函数 | 追踪任务更新 | 注册接收者监听连接变化 )
文章目录 一.ConnectivityController 连接控制器引入 二.ConnectivityController 构造方法解析 ( 注册接收者 ) 三.mConnectivityRecei ...
- 【Android 性能优化】应用启动优化 ( 阶段总结 | Trace 文件分析及解决方案 | 源码分析梳理 | 设置主题的方案总结 ) ★
文章目录 一. 常用的耗时方法优化方案 ( 重要 ) 二. 源码分析梳理 1. 应用启动时间计算相关源码分析 2. Launcher 应用中启动 Android 应用流程 三. 启动白屏解决方案 An ...
- 命令构建gradle项目_【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 grad ...
- 【Android 修炼手册】Gradle 篇 -- Gradle 源码分析
预备知识 理解 gradle 的基本开发 了解 gradle task 和 plugin 使用及开发 了解 android gradle plugin 的使用 看完本文可以达到什么程度 了解 grad ...
- 源码分析Android Handler是如何实现线程间通信的
源码分析Android Handler是如何实现线程间通信的 Handler作为Android消息通信的基础,它的使用是每一个开发者都必须掌握的.开发者从一开始就被告知必须在主线程中进行UI操作.但H ...
最新文章
- YOLOv5训练量化压缩
- python中re的安装步骤_Python中requent库的安装与卸载【原创】
- python多包运行_如何组织包含多个包的python项目,以便包中的每个文件仍然可以单独运行?...
- python如何统计字典里面健的数量_Python中使用Counter进行字典创建以及key数量统计的方法...
- 无监督学习与有监督学习的本质区别是什么_吴恩达老师课程笔记系列第三节-无监督学习定义...
- 计算机课有什么作业,计算机课作业~
- Python之每个人都应该知道的30个一行代码程序
- 0/1背包问题-----回溯法求解
- 【DS】时间复杂度排序
- dockerq启动报错(iptables failed: iptables --wait -t nat -A DOCKER -p tcp -d 0/0 --dport 9876 -j DNAT --t
- 第2课:关闭被黑客扫描的端口
- mongodb的delete_大数据技术之MongoDB数据删除
- 整数分解为若干项之和python_SVD奇异值分解及Python实例
- python主流测试框架的简介
- 数学建模笔记——评价类模型(二)
- MW6MaxiCode ACX溢出
- 亚马逊网络关联是什么
- 转帖-[教程] Win7精简教程(简易中度)2016年8月-0day
- 数据挖掘-泰坦尼克号生存数据分析
- java channel midi_为Java程序中添加播放MIDI音乐功能
热门文章
- Spark算子:统计RDD分区中的元素及数量
- js创建,删除,读取文件目录_note
- another mysql daemon_MySQL错误Another MySQL daemon already running with the same unix socket.
- linux python 环境 png,在mint-15 linux上显示python的.png图像
- 作为文本内容空格的HTML标签,HTML.fromHtml在文本末尾添加空格?
- python制作的游戏如何转化为swf_如何从python生成swf格式的幻灯片?
- 获取页眉值vba_VBA抓取股票历史数据的整体表处理
- uniapp同步获取用户信息_表单设计是为了帮助用户获取信息,而不是填写
- php pdo 新建数据库,php – 使用PDO数据库类而不是每次都创建新...
- android 简单json,Android JSON数据简单处理