Android 联系人导入导出(VCard格式)
之前在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格式)相关推荐
- mysql数据导入导出 CSV格式_MySQL中导入导出CSV格式数据
原标题:MySQL中导入导出CSV格式数据 预备阅读:MySQL中的主键问题和赋权限问题 今天来讲一下在MySQL中导入和导出CSV格式数据的操作. CSV格式数据 逗号分隔值(Comma-Separ ...
- 会声会影背景轨中的所有效果和素材导出为html5格式导入不,如何解决会声会影导入导出的格式问题?...
原标题:如何解决会声会影导入导出的格式问题? 时常有朋友会遇到这样的问题,视频无法导入,或者在渲染输出时出现错误,造成这种问题的主要原因是视频格式的问题,那么哪种格式是会声会影所支持的呢?在导入和导出 ...
- Android通信相关-联系人-导入导出联系人
对于Android手机来说,通信是一大块功能.APP层包括联系人.短信.拨号.InCallUI.framework层包括Telephony.Telecom.PhoneGlobal.RIL等,底层又涉及 ...
- android 联系人导入iphone,4种快速将联系人导入iPhone的方法
第2部分:从CSV / VCF将联系人导入iPhone 在上一个方法中,您学习了如何从SIM卡将联系人导入iPhone,但这并不是您想要导入联系人的唯一情况.人们经常搜索如何将联系人从iPad转移到i ...
- Android Studio 导入/导出项目以及Android Device Monitor导出文件
1导出项目:从自己的Android找到自己的项目 lesson04zhl如图,再压缩即可 2压缩包导入项目:接受之前的压缩包并且解压到自己放置Android project 的文件夹,开启Androi ...
- mysql数据导入导出 CSV格式_导出mysql的数据为csv格式的文件
Mysql自带数据导出的命令 into outfile(本地导出) SELECT * FROM server_warning_repaired into outfile '/tmp/test.csv' ...
- mysqlOracle导入导出txt格式的数据
一: mysql导入数据load data infile用法 导出一张表的数据,以',' 为分隔符 select * from pet into outfile 'c:/pet.txt' ...
- mysql导入数据的格式转换_mysql数据库导入导出csv格式实现zblog转换帝国cms教程记录...
这几天把一个网站由zblog换成帝国cms,假如成功更换,就基本上实现了所有的站都更换为帝国cms,其实zblog本身还是可以的,做小站很不错,至少比wp强很多,wp除了生态好,其它都不给力,用起来闹 ...
- mysql数据导入导出 CSV格式_mysql数据一键导出到csv文件
在数据库中获取数据的结果集,通过fputcsv() 函数将行格式化为 CSV 并写入一个打开的文件. fputcsv('打开的文件','数组数据'),该函数返回写入字符串的长度.若出错,则返回 fal ...
最新文章
- Semtech与Lacuna从太空接收信息
- JZOJ 5192. 【NOI2017模拟7.2】容器
- Linux Ubuntu终端“@”前后的含义及修改(修改用户名及主机名)【试用办法,部分不可行】
- java经常会出现异常的是,“Java异常Exception”总结
- NB-IOT和LoRa技术优劣对比
- Mysql5.0中文乱码解决方案
- ubuntu没有指纹登录_Thinkpad在Ubuntu 20.04下使用指纹登陆
- 中国“互联网+酒店”专题研究报告2015
- 小D课堂 - 新版本微服务springcloud+Docker教程_5-06 高级篇幅之深入源码
- “搏一搏,单车变摩托
- Java游戏编程技术-1
- 由浅入深理解JVM垃圾回收机制
- js基础-点击切换div背景颜色
- 51单片机汇编语言点亮一位数码管,并计时(超详细分析汇编语言)
- 二级mysql真题2019_2019年9月二级MySQL试题(汇总)
- 攻防世界-Web-练习区12题解
- M1 和 Docker 谈了个恋爱
- 解决数据库日期返回格式不是yyyy-MM-dd HH:mm:ss 的问题
- C++ 高级程序设计
- 代数基础 | Kronecker积
热门文章
- VB.NET版机房收费系统—DataGridView应用
- 网银无法登录解决办法
- MetaWeblog API中文说明
- No plugin found for prefix ‘compile‘ in the current project
- unreported exception java.lang.Exception; must be caught or declared to be thrown
- 64位系統修復dll
- yelee主题中加入revolvermaps插件
- 6.1 范数最小解,右逆,零空间映射矩阵
- 原生Aajax 和jQuery Ajax 写法个人总结(简单)
- TCP/IP协议基本概括+ARP协议详解+DNS协议详解---Linux学习笔记