磨礪營馬劍威老師—Android 聯(lián)系人數(shù)據(jù)庫表詳解

現(xiàn)在有很多應(yīng)用都需要讀取我們的聯(lián)系人列表涂佃,比如,微信蜈敢,QQ等等辜荠。還有些專門的通訊錄應(yīng)用,就可以不用官方自帶的簡陋的通訊錄抓狭,其實(shí)所有這些app全部是讀取的同一個(gè)數(shù)據(jù)庫侨拦,就是官方提供唯一的聯(lián)系人數(shù)據(jù)庫。今天就為大家來講解下這個(gè)數(shù)據(jù)庫的說明和使用辐宾。

1.首先手機(jī)添加幾個(gè)聯(lián)系人

2.然后在此路徑下可以找到db文件:/data/data/com.android.providers.contacts/databases/contact2.db

3.導(dǎo)出文件狱从,將其導(dǎo)入可視化數(shù)據(jù)庫管理器當(dāng)中(我這里用的是SQLiteExpertPersonal)

我去。叠纹。這么多表季研?無從下手有沒有?別著急誉察,這里雖然表很多与涡,其實(shí)要用的只有4張表,這里給大家標(biāo)注下

下面分別對這4張表分別說明:

1持偏、contacts表

_id:表的ID驼卖,主要用于其它表通過contacts表中的ID可以查到相應(yīng)的數(shù)據(jù)。

display_name:聯(lián)系人名稱

photo_id:頭像的ID鸿秆,如果沒有設(shè)置聯(lián)系人頭像酌畜,這個(gè)字段就為空

times_contacted:通話記錄的次數(shù)

last_time_contacted:最后的通話時(shí)間

lookup:是一個(gè)持久化的儲(chǔ)存,因?yàn)橛脩艨赡軙?huì)改名卿叽,但是它改不了lookup

該表保存了本機(jī)保存的所有聯(lián)系人桥胞,每個(gè)聯(lián)系人占一行,該表保存了聯(lián)系人的ContactID考婴、聯(lián)系次數(shù)贩虾、最后一次聯(lián)系的時(shí)間、是否含有號(hào)碼沥阱、是否被添加到收藏夾等信息缎罢。

2、raw_contacts表

version:版本號(hào),用于監(jiān)聽變化

deleted:刪除標(biāo)志策精,0為默認(rèn)1表示這行數(shù)據(jù)已經(jīng)刪除

display_name:聯(lián)系人名稱

last_time_contacts:最后聯(lián)系的時(shí)間

該表保存了所有創(chuàng)建過的手機(jī)聯(lián)系人舰始,每個(gè)聯(lián)系人占一行,表里有一列標(biāo)識(shí)該聯(lián)系人是否被刪除蛮寂,該表保存了兩個(gè)ID:RawContactID和ContactID,從而將contacts表和raw_contacts表聯(lián)系起來蔽午。該表保存了聯(lián)系人的RawContactID、ContactID酬蹋、聯(lián)系次數(shù)及老、最后一次聯(lián)系的時(shí)間、是否被添加到收藏夾范抓、顯示的名字骄恶、用于排序的漢語拼音等信息。

3匕垫、mimetypes表

該表定義了所有的MimeTypeID僧鲁,即聯(lián)系人的各個(gè)字段的唯一標(biāo)志。

4象泵、data表

raw_contact_id:通過raw_contact_id可以找到raw_contact表中相對的數(shù)據(jù)寞秃。

data1到data15這里保存著聯(lián)系人的信息聯(lián)系人名稱聯(lián)系人電話號(hào)碼電子郵件備注等等。

該表保存了所有創(chuàng)建過的手機(jī)測聯(lián)系人的所有信息偶惠,每個(gè)字段占一行春寿,該表保存了兩個(gè)ID:MimeTypeID和RawContactID,從而將data表和raw_contacts表聯(lián)系起來。聯(lián)系人的所有信息保存在列data1至data15中忽孽,各列中保存的內(nèi)容根據(jù)MimeTypeID的不同而不同绑改。如保存號(hào)碼(MimeTypeID=5)的那行數(shù)據(jù)中,data1列保存號(hào)碼兄一,data2列保存號(hào)碼類型(手機(jī)號(hào)碼厘线、家庭號(hào)碼、工作號(hào)碼等)出革。

下面說下操作聯(lián)系人的方法

首先要是加入這兩個(gè)權(quán)限

讀取聯(lián)系人需要步驟如下:

1.先讀取contacts表造壮,獲取ContactsID;

2.再在raw_contacts表中根據(jù)ContactsID獲取RawContactsID蹋盆;

3.然后就可以在data表中根據(jù)RawContactsID獲取該聯(lián)系人的各數(shù)據(jù)了费薄。

新建聯(lián)系人步驟如下:

1.新建聯(lián)系人時(shí),根據(jù)contacts栖雾、raw_contacts兩張表中ID的使用情況,自動(dòng)生成ContactID和RawContactID伟众。

2.Android源碼新建重復(fù)姓名的聯(lián)系人的ContactID是不重復(fù)的析藕,所以會(huì)重復(fù)顯示。

3.用下面的代碼新建聯(lián)系人凳厢,如果多次新建的聯(lián)系人的姓名是一樣的账胧,生成的ContactID也會(huì)重復(fù)竞慢,RawContactID不會(huì)重復(fù),我們在讀取聯(lián)系人的時(shí)候可以獲取所有同姓名聯(lián)系人的號(hào)碼等信息治泥,在顯示聯(lián)系人的時(shí)候筹煮,重復(fù)姓名的聯(lián)系人的所有字段信息都會(huì)合并起來顯示為一個(gè)聯(lián)系人。

刪除聯(lián)系人:

非常簡單只需要將raw_contacts表中指定RawContactID的行刪除居夹,其他表中與之關(guān)聯(lián)的數(shù)據(jù)都會(huì)自動(dòng)刪除败潦。

更新聯(lián)系人:

聯(lián)系人的所有信息都是保存在data表中,所以要更新聯(lián)系人准脂,我們只需要根據(jù)RawContactID和MIMETYPE修改data表中的內(nèi)容劫扒。

本文出自微信公眾號(hào)mjw-java

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市狸膏,隨后出現(xiàn)的幾起案子沟饥,更是在濱河造成了極大的恐慌,老刑警劉巖湾戳,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件贤旷,死亡現(xiàn)場離奇詭異,居然都是意外死亡砾脑,警方通過查閱死者的電腦和手機(jī)幼驶,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來拦止,“玉大人县遣,你說我怎么就攤上這事⌒谧澹” “怎么了萧求?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長顶瞒。 經(jīng)常有香客問我夸政,道長,這世上最難降的妖魔是什么榴徐? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任守问,我火速辦了婚禮,結(jié)果婚禮上坑资,老公的妹妹穿的比我還像新娘耗帕。我一直安慰自己,他們只是感情好袱贮,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布仿便。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪嗽仪。 梳的紋絲不亂的頭發(fā)上荒勇,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天,我揣著相機(jī)與錄音闻坚,去河邊找鬼沽翔。 笑死,一個(gè)胖子當(dāng)著我的面吹牛窿凤,可吹牛的內(nèi)容都是我干的仅偎。 我是一名探鬼主播,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼卷玉,長吁一口氣:“原來是場噩夢啊……” “哼哨颂!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起相种,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤威恼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后寝并,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體箫措,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年衬潦,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了斤蔓。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡镀岛,死狀恐怖弦牡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情漂羊,我是刑警寧澤驾锰,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布,位于F島的核電站走越,受9級特大地震影響椭豫,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜旨指,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一赏酥、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧谆构,春花似錦裸扶、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽瞬项。三九已至蔗蹋,卻和暖如春何荚,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背猪杭。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工餐塘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人皂吮。 一個(gè)月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓戒傻,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜂筹。 傳聞我的和親對象是個(gè)殘疾皇子需纳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354

推薦閱讀更多精彩內(nèi)容