谷歌手机突然连不上服务器了,这可急死我啦,我的通讯录什么的都在服务器上没有同步过来。
于是手动下载CVS文件导入到手机,这时候发现格式问题不能导入。仔细分析了两个文件的格式,很好都是字符文件,可以通过字符串匹配来手动构造,但是工作量不小。仔细理了下思路,
张三,张三,,,,,,,,,,,,,,,,,,,,,,,,,Starred in Android ::: * My Contacts,,,Mobile,1388377xxxx,Work,89311177,Work,重庆市xxxxxxxxx,,,,,,,,,支点通讯 Fulcrum Enmmmicatlnns,,,,,,,,
数据格式如同上面,我们可以一行一行的读取,然后通过,分割保存在一个数组里面,然后把字符串数组放置在一个集合里面(去构造一个VO也行),这样我们就得到了所有的数据。
BEGIN:VCARD
N:张三三
EMAIL;PREF;HOME:cfg@gg.b
EMAIL;WORK:work@gg.b
EMAIL;OTHER:other@fc.vv
EMAIL;OTHER:other@ff.b
TEL;PREF;HOME:55555
TEL;WORK:55555
TEL;OTHER:55555
TEL;OTHER:5858
ADR;PREF;HOME:;;posthome
ADR;WORK:;;postwork
ADR;OTHER:;;postother
NOTE:about
VOICE:0
END:VCARD
BEGIN:VCARD
构造后的数据结构很简单,我们把抽出来的数据通过数组下标取出来,构造成对应的格式
然后保存要求是utf8不然手机解析不了。
好了 有思路,开始写代码了
/**
* 抽取数据并转换
* @param path 谷歌通讯录文件
* @return 处理后的字符串
*/
public String getContent(String path){
StringBuffer content=new StringBuffer();
try {
BufferedReader br=new BufferedReader(new InputStreamReader(new FileInputStream(path), "unicode"));
String str;
while((str=br.readLine())!=null){
String[] tmp=str.split(",");
content.append("\r\nBEGIN:VCARD\r\nN:"+tmp[0]);
if(!tmp[28].equals(""))
content.append("\r\nEMAIL;PREF;HOME:"+tmp[28]);
if(tmp.length>=30){
String tel[]=tmp[30].split(":::");
content.append("\r\nTEL;PREF;MOBILE:"+tel[0]);
for(int i=1;i<tel.length;i++)
content.append("\r\nTEL;MOBILE:"+tel[i]);
}
if(tmp.length>=34)
content.append("\r\nADR;HOME:;;"+tmp[34]);
content.append("\r\nVOICE:0");
content.append("\r\nEND:VCARD");
}
br.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return content.toString().trim();
}
然后编写一个前端
一个软件就出来了,试着把数据导入手机,ok一切正常!
我把程序和源码打包了,有兴趣的可以自己去看看
点击下载
分享到:
相关推荐
一个简单的用于Android的dp、sp和px单位之间的转换工具类
本篇文章将详细介绍如何进行`androidmk`到`Android.bp`的转换,并探讨两者之间的差异以及转换工具的使用方法。 一、`Android.mk`与`Android.bp`概述 1. `Android.mk`:这是Android早期使用的构建系统,基于GNU ...
RGB-YUV转换工具是一款专为Android平台设计的应用程序,它主要功能是实现RGB色彩空间与YUV色彩空间之间的转换。在数字图像处理和视频编码领域,YUV色彩模型被广泛使用,因为它能有效地减少存储和传输的数据量,尤其...
在Android应用开发中,国际...总的来说,`android String.xml Excel 相互转换工具`是Android应用开发中的利器,它们简化了国际化过程中字符串资源的管理,提高了开发效率,是每个进行多语言支持的项目必备的辅助工具。
windows版dimens自动转换工具
可以直接下载下来,然后调用选择图片的方法后返回的一个data去转换为path,调用CommonUtil.amendRotatePhoto,复制给String path,最后 放入到imageView上调用 CommonUtil.createAsciiPic方法,赋到bitmap里
调此方法输入所要转换的时间输入例如("2014-06-14-16-09-00")转换需要的样式
第三步:开始写布局文件,写的时候如果有要设置大小,则不要直接写成如:android:layout_width:"20dp"的形式,应该写成:android:layout_width:"@dimen/DIG_20PX",注意这里如果是设置背景图片,则大小是图片的大小...
Android下适应各种分辨率——dimens转换工具
这个“Android UDP通讯工具”可能是一个应用程序,允许开发者或者用户通过UDP进行网络通信,例如实现语音聊天、多人在线游戏或者其他需要快速数据交换的场景。 UDP通讯工具的核心原理主要包括以下几个部分: 1. **...
将android.mk转换为android.bp
各种进制转换工具,轻松转换,让你不再为转换各种数据而烦恼
总结一下,`String.xml Excel 相互转换工具`是Android应用开发中进行字符串资源管理和国际化的利器,它通过将XML与Excel的便捷性结合,简化了文本编辑和协作流程,提升了工作效率。通过分析提供的文件,我们可以推测...
在Android平台上实现即时通讯(Instant Messaging,简称IM)是一项常见的技术需求,特别是在社交应用和团队协作工具中。本文将深入探讨基于XMPP协议的Android即时通讯DEMO,讲解相关的关键技术和实现步骤。 **1. ...
可以将签名生成的MD5和SHA1进行转换,可直接复制粘贴。
提供的“坐标转换”工具可以方便地进行这些复杂的转换。用户输入WGS84坐标,选择目标坐标系(UTM或BJ54),工具会自动计算出转换后的坐标。这样的工具对于地理信息处理、GIS分析以及需要跨坐标系工作的专业人士非常...
为了更方便地管理和操作SQLite数据库,开发者通常会借助一些可视化工具,例如“android sqlite可视化工具”。这类工具提供了图形化的界面,使得数据库的创建、查询、修改和管理变得更加直观和便捷。 “android ...
Android开发过程中经常会涉及到时间转换的问题,此工具类包含了常用的时间转换方法。可直接用于开发中,方便快捷,节省开发时间。通用性强。
百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具
标题中的“Android反编译工具包(最完整的Android反编译工具包)”表明这是一个集合了多种工具的资源包,用于帮助开发者和安全研究人员进行APK的反编译工作。 首先,让我们来了解一下反编译的基本概念。反编译是将已...