技術:android聯系人技術分析
知識點:分析聯系人中structuredpostal和structuredname資料
重點:資料類型
首先分析第一個字段:structuredpostal
它代表聯系人的位址資訊,如圖表示字段:

先看看它有的類型吧:
有四種資料類型。
看源碼中定義的四種類型:
還有種定義類型:type=0時,是自定義類型。它沒有單獨在字段中定義。
按下來分析,structuredpostal中重要的字段:
先從源碼中看起:
類型:structuredpostal.content_item_type
structuredpostal.formatted_address:對應data.data1
structuredpostal.type:對應data.data2:表示類型
structuredpostal.label:對應data.data3:表示自定義類型名稱
structuredpostal.street:對應data.data4:表示街道
structuredpostal.pobox:對應data.data5:表示郵箱
structuredpostal.neighborhood:對應data.data6:表示鎮(看英文解釋)
structuredpostal.city:對應data.data7:表示城市
structuredpostal.region:對應data.data8:表示區域(省級)
structuredpostal.postcode:對應data.data9:表示郵編
structuredpostal.country:對應data.data10:表示國家
最後會分析存入資料庫的值。
下面分析:structuredname
structuredname中主要儲存的是聯系人姓名,其稱呼名和其拼音名。
姓名的表示有以下兩種方式:
第一種:display_name
第二種:given_name+family_name
注:第一種和第二種應該是互斥的。有些手機支援第一種,有些則支援第二種。但必須支援其中的一種。
稱呼名,是指對人的稱呼。比如 mr hu。它隻有一個表示形式:prefix+middle_name+suffix
注:很多手機都不支援該項。
拼音名,是指漢語拼音的形式,或片假名的形式,或平假名的形式等。
它隻有一個表示形式:phonetic_given_name+phonetic_middle_name+phonetic_family_name
接下來看看模拟器中提供的姓名有多少吧:
先看圖:
國外人的姓名字段可真多啊,是以,要操作手機中的姓名,還是要非常的小心。不同的手機可能會有不一樣的。
接着看顯示的名字,在模拟器中是什麼?
使用者名的顯示,就是上面提到的多個字段組合起來的。
android手機具體會使用哪種方式表示姓名,可能會一樣。但我們還是要看看系統源碼中提供了哪些重要的字段:
沒想到它會有這麼多字段吧。
接下來分析這些字段:
類型:structuredname.content_item_type
structuredname.display_name:對應data.data1:表示顯示的名字
structuredname.given_name:對應data.data2:表示名
structuredname.family_name:對應data.data3:表示family名(在國外表示父母的姓)
structuredname.prefix:對應data.data4:表示姓名前的稱呼,如sir(先生/女士)
structuredname.middle_name :對應data.data5:表示姓名中間的字
structuredname.suffix :對應data.data6:表示姓名敬語的字尾(不知道是什麼)
後面的幾個字段,都是語音相關設定的。
今天又折騰了挺晚了,晚上參加一個會議,和朋友喝了點酒,頭暈暈的。但還是要堅持,把自己整理的東西,分享給大家。一起學習進步吧!!
後面還有一個資料庫存入分析,快點來看看吧:
先看位址存入資料庫的字段:
接下來看姓名字段資料:
如果對聯系人操作,有問題的,可以結合源碼和操作資料庫的内容分析,就一定能很快的解決問題。
問題的難,就是思考時間太少。隻能多用心,花時間研究。總能解決問題。
做技術,不能太及,需要一步步穩。用事實說話。
好了,今天就介紹到這裡,如果對文章中有問題的地方,歡迎 一起交流。。隻有交流,才能更好的進步。
加油吧,朋友們!!!