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 方法裏增加對該數據的判斷並進行顯示。

發佈了100 篇原創文章 · 獲贊 10 · 訪問量 11萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章