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