日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android 联系人导入导出(VCard格式)

發(fā)布時間:2023/12/20 Android 42 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 联系人导入导出(VCard格式) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

之前在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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。