Android 联系人导入导出(VCard格式)
之前在Android Contact 導(dǎo)入導(dǎo)出 vcf格式(不依賴第三方庫)記錄了一下依賴Android sdk中的功能導(dǎo)入導(dǎo)出聯(lián)系人(第一次做java項(xiàng)目內(nèi)容,有些地方的記錄是否正確,暫時(shí)我也不知道。。。),最終發(fā)現(xiàn)像聯(lián)系人分組之類的無法導(dǎo)出,所以就想還是自己去寫VCard文件
權(quán)當(dāng)筆記記錄,我把我的工作順序也記錄一下
第一步是查資料,肯定是去官網(wǎng)(作為猿猴,必須自備梯子):
聯(lián)系人提供程序,這里有整體的介紹,我挨著看完的,看完這個(gè)也就有了整體的了解
比如聯(lián)系人的主要表結(jié)構(gòu),聯(lián)系人、原始聯(lián)系人的概念,聯(lián)系人數(shù)據(jù)的查詢等,文章還有相關(guān)的代碼片段
第二步是找查VCard的相關(guān)資料,首先是百度百科了解了大概,知道他是一個(gè)規(guī)范,他的結(jié)構(gòu)和組織形式
最后去找了個(gè)第三方庫ez-vcard,這個(gè)是專門處理vCard的,個(gè)人感覺很好用,跟著他提供的例子走一波,發(fā)現(xiàn)就已經(jīng)滿足了我個(gè)人的需求
比如電話郵件什么的直接提供了操作接口,也提供了接口操作vCard擴(kuò)展類型
第三步就是寫測試代碼,根據(jù)一、二步寫了代碼,嘗試備份姓名、電話、郵件三種數(shù)據(jù),然后嘗試了還原,當(dāng)然寫的過程中都在查api文檔(Android sdk文檔我是下載到本地的,所以直接在Android studio中可以查看,沒下載我也不知道能不能。。。。)
ContactsContract.CommonDataKinds類定義了常規(guī)的聯(lián)系人信息,比如電話、郵件等
比如電話號碼:ContactsContract.CommonDataKinds.Phone
去看這個(gè)類文檔,類別名(Column aliases)節(jié)點(diǎn)中描述了相關(guān)列的定義
第四步就是做Demo,先做聯(lián)系人備份,想了一下代碼結(jié)構(gòu),因?yàn)镃ontactsContract.CommonDataKinds中的數(shù)據(jù)需求并未完全覆蓋,所以我想把ContactsContract.CommonDataKinds中定義的各種數(shù)據(jù)放在各自的類中來處理,于是我就定義了一個(gè)ContactVCardFillerAbstract的抽象類,提供一個(gè)fill接口,fill接口由子類實(shí)現(xiàn),然后為了方便掛載、卸載Filler,我把Filler以鏈表的形式組織起來(有點(diǎn)像職責(zé)鏈)。在子類實(shí)現(xiàn)的過程中,所有的定義我是以Android的定義為準(zhǔn),如果ez-vcard不直接支持,就直接自定義類型,比如ContactsContract.CommonDataKinds.Im這種數(shù)據(jù),可以這樣子自定義(根據(jù)規(guī)范,自定義必須以X-開頭)
第一種:
X-IM;TYPE=QQ:12345677
X-IM;TYPE=ICQ:96321587
第二種:
X-IM-QQ:12345677
X-IM-ICQ:96321587
第五步就是做聯(lián)系人還原,和備份類似,直接定義了一個(gè)VCardContactFillerAbstract,然后依次實(shí)現(xiàn)各個(gè)子類,寫完之后發(fā)現(xiàn)備份和還原的抽象類可以再次抽象成同一個(gè),于是就寫成了ContentFillerAbstract
第六步就是再次查看代碼然后再改,發(fā)現(xiàn)因?yàn)镈ata表是一張縱表,同時(shí)也為了方便列擴(kuò)充,所以定義了一個(gè)DataTable結(jié)構(gòu)來存儲要方便很多(備份聯(lián)系人主要就是操作data表),
然后又定義了一個(gè)ContactVCardLabelMapping來做VCard類型和Contact數(shù)據(jù)的映射(起名成ContactVCardContacts感覺要比Mapping要好)
基本就做了這么多,此Demo就完成了
Demo 代碼(AndroidContactsBackUpRestoreVCardDemo?)
此Demo包含以下數(shù)據(jù)備份還原 聯(lián)系人姓名 聯(lián)系人頭像 聯(lián)系人的電話 聯(lián)系人的生日和周年紀(jì)念 備注信息 分組信息 聯(lián)系人的地址信息 聯(lián)系人的Email 聯(lián)系人的Company和Title信息 聯(lián)系人的Website; 聯(lián)系人使用的即時(shí)聊天(IM)轉(zhuǎn)載于:https://www.cnblogs.com/maoyuanwai/p/8298248.html
總結(jié)
以上是生活随笔為你收集整理的Android 联系人导入导出(VCard格式)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python心得基础篇【1】入门篇
- 下一篇: Android Monkey测试入门(摘