之前在Android Contact 导入导出 vcf格式(不依赖第三方库)记录了一下依赖Android sdk中的功能导入导出联系人(第一次做java项目内容,有些地方的记录是否正确,暂时我也不知道。。。),最终发现像联系人分组之类的无法导出,所以就想还是自己去写VCard文件

权当笔记记录,我把我的工作顺序也记录一下

第一步是查资料,肯定是去官网(作为猿猴,必须自备梯子):

联系人提供程序,这里有整体的介绍,我挨着看完的,看完这个也就有了整体的了解

比如联系人的主要表结构,联系人、原始联系人的概念,联系人数据的查询等,文章还有相关的代码片段

第二步是找查VCard的相关资料,首先是百度百科了解了大概,知道他是一个规范,他的结构和组织形式

最后去找了个第三方库ez-vcard,这个是专门处理vCard的,个人感觉很好用,跟着他提供的例子走一波,发现就已经满足了我个人的需求

比如电话邮件什么的直接提供了操作接口,也提供了接口操作vCard扩展类型

第三步就是写测试代码,根据一、二步写了代码,尝试备份姓名、电话、邮件三种数据,然后尝试了还原,当然写的过程中都在查api文档(Android sdk文档我是下载到本地的,所以直接在Android studio中可以查看,没下载我也不知道能不能。。。。)

ContactsContract.CommonDataKinds类定义了常规的联系人信息,比如电话、邮件等

比如电话号码:ContactsContract.CommonDataKinds.Phone

去看这个类文档,类别名(Column aliases)节点中描述了相关列的定义

第四步就是做Demo,先做联系人备份,想了一下代码结构,因为ContactsContract.CommonDataKinds中的数据需求并未完全覆盖,所以我想把ContactsContract.CommonDataKinds中定义的各种数据放在各自的类中来处理,于是我就定义了一个ContactVCardFillerAbstract的抽象类,提供一个fill接口,fill接口由子类实现,然后为了方便挂载、卸载Filler,我把Filler以链表的形式组织起来(有点像职责链)。在子类实现的过程中,所有的定义我是以Android的定义为准,如果ez-vcard不直接支持,就直接自定义类型,比如ContactsContract.CommonDataKinds.Im这种数据,可以这样子自定义(根据规范,自定义必须以X-开头)

第一种:

X-IM;TYPE=QQ:12345677

X-IM;TYPE=ICQ:96321587

第二种:

X-IM-QQ:12345677

X-IM-ICQ:96321587

第五步就是做联系人还原,和备份类似,直接定义了一个VCardContactFillerAbstract,然后依次实现各个子类,写完之后发现备份和还原的抽象类可以再次抽象成同一个,于是就写成了ContentFillerAbstract

第六步就是再次查看代码然后再改,发现因为Data表是一张纵表,同时也为了方便列扩充,所以定义了一个DataTable结构来存储要方便很多(备份联系人主要就是操作data表),

然后又定义了一个ContactVCardLabelMapping来做VCard类型和Contact数据的映射(起名成ContactVCardContacts感觉要比Mapping要好)

基本就做了这么多,此Demo就完成了

Demo 代码(AndroidContactsBackUpRestoreVCardDemo )

此Demo包含以下数据备份还原
联系人姓名
联系人头像
联系人的电话
联系人的生日和周年纪念
备注信息
分组信息
联系人的地址信息
联系人的Email
联系人的Company和Title信息
联系人的Website;
联系人使用的即时聊天(IM)

转载于:https://www.cnblogs.com/maoyuanwai/p/8298248.html

Android 联系人导入导出(VCard格式)相关推荐

  1. mysql数据导入导出 CSV格式_MySQL中导入导出CSV格式数据

    原标题:MySQL中导入导出CSV格式数据 预备阅读:MySQL中的主键问题和赋权限问题 今天来讲一下在MySQL中导入和导出CSV格式数据的操作. CSV格式数据 逗号分隔值(Comma-Separ ...

  2. 会声会影背景轨中的所有效果和素材导出为html5格式导入不,如何解决会声会影导入导出的格式问题?...

    原标题:如何解决会声会影导入导出的格式问题? 时常有朋友会遇到这样的问题,视频无法导入,或者在渲染输出时出现错误,造成这种问题的主要原因是视频格式的问题,那么哪种格式是会声会影所支持的呢?在导入和导出 ...

  3. Android通信相关-联系人-导入导出联系人

    对于Android手机来说,通信是一大块功能.APP层包括联系人.短信.拨号.InCallUI.framework层包括Telephony.Telecom.PhoneGlobal.RIL等,底层又涉及 ...

  4. android 联系人导入iphone,4种快速将联系人导入iPhone的方法

    第2部分:从CSV / VCF将联系人导入iPhone 在上一个方法中,您学习了如何从SIM卡将联系人导入iPhone,但这并不是您想要导入联系人的唯一情况.人们经常搜索如何将联系人从iPad转移到i ...

  5. Android Studio 导入/导出项目以及Android Device Monitor导出文件

    1导出项目:从自己的Android找到自己的项目 lesson04zhl如图,再压缩即可 2压缩包导入项目:接受之前的压缩包并且解压到自己放置Android project 的文件夹,开启Androi ...

  6. mysql数据导入导出 CSV格式_导出mysql的数据为csv格式的文件

    Mysql自带数据导出的命令 into outfile(本地导出) SELECT * FROM server_warning_repaired into outfile '/tmp/test.csv' ...

  7. mysqlOracle导入导出txt格式的数据

     一: mysql导入数据load data infile用法 导出一张表的数据,以',' 为分隔符 select * from pet  into  outfile 'c:/pet.txt'   ...

  8. mysql导入数据的格式转换_mysql数据库导入导出csv格式实现zblog转换帝国cms教程记录...

    这几天把一个网站由zblog换成帝国cms,假如成功更换,就基本上实现了所有的站都更换为帝国cms,其实zblog本身还是可以的,做小站很不错,至少比wp强很多,wp除了生态好,其它都不给力,用起来闹 ...

  9. mysql数据导入导出 CSV格式_mysql数据一键导出到csv文件

    在数据库中获取数据的结果集,通过fputcsv() 函数将行格式化为 CSV 并写入一个打开的文件. fputcsv('打开的文件','数组数据'),该函数返回写入字符串的长度.若出错,则返回 fal ...

最新文章

  1. Semtech与Lacuna从太空接收信息
  2. JZOJ 5192. 【NOI2017模拟7.2】容器
  3. Linux Ubuntu终端“@”前后的含义及修改(修改用户名及主机名)【试用办法,部分不可行】
  4. java经常会出现异常的是,“Java异常Exception”总结
  5. NB-IOT和LoRa技术优劣对比
  6. Mysql5.0中文乱码解决方案
  7. ubuntu没有指纹登录_Thinkpad在Ubuntu 20.04下使用指纹登陆
  8. 中国“互联网+酒店”专题研究报告2015
  9. 小D课堂 - 新版本微服务springcloud+Docker教程_5-06 高级篇幅之深入源码
  10. “搏一搏,单车变摩托
  11. Java游戏编程技术-1
  12. 由浅入深理解JVM垃圾回收机制
  13. js基础-点击切换div背景颜色
  14. 51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)
  15. 二级mysql真题2019_2019年9月二级MySQL试题(汇总)
  16. 攻防世界-Web-练习区12题解
  17. M1 和 Docker 谈了个恋爱
  18. 解决数据库日期返回格式不是yyyy-MM-dd HH:mm:ss 的问题
  19. C++ 高级程序设计
  20. 代数基础 | Kronecker积

热门文章

  1. VB.NET版机房收费系统—DataGridView应用
  2. 网银无法登录解决办法
  3. MetaWeblog API中文说明
  4. No plugin found for prefix ‘compile‘ in the current project
  5. unreported exception java.lang.Exception; must be caught or declared to be thrown
  6. 64位系統修復dll
  7. yelee主题中加入revolvermaps插件
  8. 6.1 范数最小解,右逆,零空间映射矩阵
  9. 原生Aajax 和jQuery Ajax 写法个人总结(简单)
  10. TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记