Android手機通信錄項目開發--聯繫人數據庫contacts2.db介紹

項目描述:該項目爲基於Android平臺的手機通信錄,主要模塊分爲四個部分:聯繫人管理模塊,通話記錄管理模塊,短信管理模塊,系統設置模塊。 java

系統結構圖以下: android


本項目啓動時間:2014年5月28日 sql

說明:本次開發項目的全部源碼所有會分享給你們。開發此項目的目的有這幾點:1、鍛鍊獨立開發項目的能力,2、增長對Android開發的瞭解,3、熟悉Android通信錄機制。 數據庫


閒話很少說,正式開始! 瀏覽器


技術要點一:熟悉Android聯繫人數據庫contacts2.db ide

1.得到聯繫人數據庫contacts2.db文件 工具

步驟1、打開Eclipse而且運行模擬器; server

步驟2、調出文件瀏覽器File Explorer(從工具欄中依次打開Windows—>Show View -> Other -> Android - > File Explorer),如圖所示: sqlite


步驟3、打開文件瀏覽器,並在此目錄data->data->com.android.providers.contacts->databases下,找到數據庫:contacts2.db,注意:若是是想導出真機上的contacts2.db數據庫,真機必須是通過root之後才能導出,不然在data目錄層就打不開。 ip


步驟4、選中contacts2.db,而且在File Explorer的右上角,選擇導出鍵,將contacts2.db數據庫導入到電腦上。


步驟5、下載數據庫可視化軟件,用來幫咱們打開contacts2.db,查看其中的表結構,這裏我推薦使用sqlitestudio,附上下載連接:連接地址

步驟6、安裝sqlitestudio,安裝成功後,打開軟件並導入contacts2.db數據庫


步驟7、雙擊Contacts2數據庫,就能看到Contacts2.db裏面全部的表

步驟9、雙擊data表,查看錶的結構


步驟10、點擊工具欄上方的數據,就能夠查看錶中的內容



2.介紹contacts2.db數據庫

有關通信錄的資料都放在contacts2.db中這個數據庫中,本次項目開發主要使用到的表分別以下:


contacts表

Contacts表是對raw contact表按照account type和account name進行的聚合,Contacts表的聚合邏輯在ContactAggregator.java文件中。

結構圖以下:


數據圖以下:



raw_contacts表

raw_contacts表描述了聯繫人每一個帳戶下的數據,根據帳戶名和帳戶類型字段進行區分。即同一個聯繫人可能在raw_contact表中有多個記錄,每一個記錄分屬於不一樣的帳戶。因此一個contact_id可能對應多個raw_contact id,爲何一個contact_id會對應多個raw_contact_id,相信讀者看到這裏就會知道該問題的答案了。從這裏咱們也發現android是容許一個聯繫人綁定多個帳戶的。

須要注意的字段爲ACCOUNT_NAME,ACCOUNT_TYPE,DELETED、VERSION。

ACCOUNT_NAME和ACOUNT_TYPE我就不詳細描述了,DELETED標誌位的做用是,當刪除一條用戶記錄時,能夠暫時再內部維護一條刪除狀態的記錄,待該帳戶的server端刪除完畢後,再從本地刪除,其實用戶能夠沒必要關心該字段的內部機制,只須要注意在查詢raw contact表時,能夠根據DELETED字段過濾掉已刪除的記錄。VERSION字段也是一個頗有用的字段,能夠根據該字段來肯定聯繫人信息是否發生變化,若是您本地保存了聯繫人信息,那麼就能夠根據VERSION信息來和系統數據庫的聯繫人信息進行比較,來肯定是否須要作UPDATE操做。

結構圖以下:


數據圖以下(兩張圖合併起來):





data表

data表存儲了聯繫人的具體信息,好比電話、email等信息,從下面的圖咱們能夠看書每一個raw contact表中的記錄會對應多個data信息,這不難理解,一個聯繫人可能有多個電話號碼,多個email,這些信息是如何存儲在data表中的呢?其實不難解決這個問題,定義一個專門的描述字段用來定義該記錄的類型,即MIME TYPE,而後根據MIME TYPE來區分該記錄的類型,而後每種信息都會有一個本身的類型。

結構圖以下:


數據以下(兩張圖合併起來):





calls表

calls表主要做用是用來存放通話記錄,主要使用到這些字段date(日期),number(電話號碼),type(通話記錄類型),name(聯繫人姓名)。

結構圖以下:


數據圖以下(兩張圖合併起來):





其中以上表中,contacts表,raw_contacts表,data表之間的關係以下圖所示:


這三張表是聯繫人數據庫的最主要的數據表,其餘的數據只是提供一些輔助功能,咱們先詳細介紹這三張表的結構和使用方法。 從上圖咱們能夠看書contacts表和raw_contact表是一對多的關係,contacts表是對raw_contact表記錄的聚合,即contacts表中是沒有帳戶(Account)的概念的,而raw_contact表是聯繫人特定帳戶的的概要信息,Data表則存儲了聯繫人的詳細信息,好比email、電話號碼等。

相關文章
相關標籤/搜索