天天看點

[android研究聯系人之三]聯系人Phone/Organization資料操作

技術:android聯系人資料庫分析

知識點:分析聯系人中phone和organization資料。

重點:資料類型

聯系人資料庫中,最重要的當然是手機号字段。接下來仔細分析該字段了。

先看android提供了多少種類型:下面是從模拟器中截的類型圖:

[android研究聯系人之三]聯系人Phone/Organization資料操作
[android研究聯系人之三]聯系人Phone/Organization資料操作
[android研究聯系人之三]聯系人Phone/Organization資料操作
[android研究聯系人之三]聯系人Phone/Organization資料操作

看到這麼多截圖,就知道一個手機字段的類型有多少了吧。總共21種類型(實際真實的手機中,當然不會有這麼全)。

來看系統源碼中對類型的定義:

怎麼隻有20種類型,難道我數錯了???

這怎麼可能 ,當然不會少了,還有一個資料就是類型為0的自定義的資料。

接下來,分析phone中,最重要的幾個字段資料:

類型:contactscontract.commondatakinds.phone.content_item_type

phone.number:對應data.data1:表示手機資料,如:13810000000

phone.type:對應data.data2:表示手機類型。注意:為0時,為自定義類型。

phone.label:對應data.data3:表示自定義類型的名稱(隻有type為0時,才有此值)。

分析起來,還是比較簡單。基本沒有太在的難度。

接下來分析organization字段:

先也看看系統提供了多少種類型:

看圖:

[android研究聯系人之三]聯系人Phone/Organization資料操作

類型隻有這三種。

看看源碼對類型的定義:

又缺少了自定義類型。看來自定義類型是單獨定義了。

接着看模拟器中的organization資料操作:

[android研究聯系人之三]聯系人Phone/Organization資料操作

難道中有這兩個字段?

當然不是,不知模拟器中會這麼簡單。

還是看源碼中,定義了哪些可操作的資料吧:

原來還有這麼多資料可以操作。我們就來分析這些字段吧:

類型: contactscontract.commondatakinds.organization.content_item_type

organization.company:對應data.data1:表示:公司/組織

organization.type:對應data.data2:表示類型,就是上面的三種類型

organization.label:對應data.data3:表示自定義類型名稱

organization.title:對應data.data4:表示标題

organization.department:對應data.data5:表示部門

organization.office_location:對應data.data9:表示辦公位置

其它的data6、7、9、10:表示是什麼呢?在不同的手機,代表可能會有差異的。

這些字段,也比較簡單,後面來看看從模拟器中導入出的資料庫吧:

[android研究聯系人之三]聯系人Phone/Organization資料操作

這個時候,發現了什麼?phone字段的data4有資料了,這是代表什麼資料呢?

先看源碼它代表什麼:

這個是什麼?看上面的注釋:明白e164就知道了:

通過度娘查詢到的解釋:

一個e.164号碼由以下幾個部分組成,不同部分之間可以用“-”、“.”或空格等連接配接:

  enum+國家碼(1~3位數字)-地區碼(n位數字)-電話号碼(15-n位數字)。

  例如:北京的一個電話号碼寫成标準的e.164格式應是:+86-10-62618501

不明白的看百科的解釋:http://baike.baidu.com/view/827326.htm

說白了,隻是一種标準。

再看一下存入的資料圖:

[android研究聯系人之三]聯系人Phone/Organization資料操作

data1:存入的是号碼。但有些手機會有一些分隔符。但data4:是反過來的資料。

但要注意:兩條同類型的資料,是沒有字段作區分。

                  是以,操作更新的時候要注意了。。。

寫到這裡,基本完成。歡迎一起和大家學習交流!!!

等到最後分析完成,再上傳源碼。。。感謝大家的關注!!!