`
zcq100
  • 浏览: 21764 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

android通讯木转换工具

阅读更多

谷歌手机突然连不上服务器了,这可急死我啦,我的通讯录什么的都在服务器上没有同步过来。

于是手动下载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一切正常!
我把程序和源码打包了,有兴趣的可以自己去看看

点击下载

分享到:
评论
1 楼 ddt0895 2010-11-25  
有一点儿缺陷,扩展性较差,固定了导入的CSV格式,应该做个手动映射,就像foxmail的csv格式通讯录导入一样

相关推荐

    Android的单位转换工具类

    一个简单的用于Android的dp、sp和px单位之间的转换工具类

    RGB-YUV转换工具 - Android App

    RGB-YUV转换工具是一款专为Android平台设计的应用程序,它主要功能是实现RGB色彩空间与YUV色彩空间之间的转换。在数字图像处理和视频编码领域,YUV色彩模型被广泛使用,因为它能有效地减少存储和传输的数据量,尤其...

    androidmk 转换Android.bp工具方法

    本篇文章将详细介绍如何进行`androidmk`到`Android.bp`的转换,并探讨两者之间的差异以及转换工具的使用方法。 一、`Android.mk`与`Android.bp`概述 1. `Android.mk`:这是Android早期使用的构建系统,基于GNU ...

    android String.xml Excel 相互转换工具

    在Android应用开发中,国际...总的来说,`android String.xml Excel 相互转换工具`是Android应用开发中的利器,它们简化了国际化过程中字符串资源的管理,提高了开发效率,是每个进行多语言支持的项目必备的辅助工具。

    android dimens转换工具

    windows版dimens自动转换工具

    Android图片转换代码工具类

    可以直接下载下来,然后调用选择图片的方法后返回的一个data去转换为path,调用CommonUtil.amendRotatePhoto,复制给String path,最后 放入到imageView上调用 CommonUtil.createAsciiPic方法,赋到bitmap里

    Android 时间日期转换工具类

    调此方法输入所要转换的时间输入例如("2014-06-14-16-09-00")转换需要的样式

    Android UDP通讯工具

    这个“Android UDP通讯工具”可能是一个应用程序,允许开发者或者用户通过UDP进行网络通信,例如实现语音聊天、多人在线游戏或者其他需要快速数据交换的场景。 UDP通讯工具的核心原理主要包括以下几个部分: 1. **...

    Android.mk转化Android.bp工具

    将android.mk转换为android.bp

    各种进制转换工具

    各种进制转换工具,轻松转换,让你不再为转换各种数据而烦恼

    Android 即时通讯demo

    在Android平台上实现即时通讯(Instant Messaging,简称IM)是一项常见的技术需求,特别是在社交应用和团队协作工具中。本文将深入探讨基于XMPP协议的Android即时通讯DEMO,讲解相关的关键技术和实现步骤。 **1. ...

    WGS84坐标系转换工具

    提供的“坐标转换”工具可以方便地进行这些复杂的转换。用户输入WGS84坐标,选择目标坐标系(UTM或BJ54),工具会自动计算出转换后的坐标。这样的工具对于地理信息处理、GIS分析以及需要跨坐标系工作的专业人士非常...

    android sqlite可视化工具

    为了更方便地管理和操作SQLite数据库,开发者通常会借助一些可视化工具,例如“android sqlite可视化工具”。这类工具提供了图形化的界面,使得数据库的创建、查询、修改和管理变得更加直观和便捷。 “android ...

    常用时间转换工具类

    Android开发过程中经常会涉及到时间转换的问题,此工具类包含了常用的时间转换方法。可直接用于开发中,方便快捷,节省开发时间。通用性强。

    Android--多分辨率使用dimens转换工具

    第三步:开始写布局文件,写的时候如果有要设置大小,则不要直接写成如:android:layout_width:"20dp"的形式,应该写成:android:layout_width:"@dimen/DIG_20PX",注意这里如果是设置背景图片,则大小是图片的大小...

    Android 经纬度坐标转换及纠偏

    百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具

    Android反编译工具包(最完整的Android反编译工具包)

    标题中的“Android反编译工具包(最完整的Android反编译工具包)”表明这是一个集合了多种工具的资源包,用于帮助开发者和安全研究人员进行APK的反编译工作。 首先,让我们来了解一下反编译的基本概念。反编译是将已...

    Android火星坐标转换

    对于详细的转换算法和步骤,可以查阅《中国GPS坐标转换》等相关技术文档,或者使用已有的开源库,如`bd-geo-coordinate`,它封装了坐标转换的逻辑,可以方便地集成到Android项目中。 总之,Android上的火星坐标...

    SVG转Android VectorDrawable工具

    本文将详细介绍SVG到Android VectorDrawable的转换工具及其工作原理。 "SVG转Android VectorDrawable工具"是一个在线平台,它简化了SVG与Android VectorDrawable之间的转换过程。用户只需将SVG文件选中并拖放到网页...

    android串口通讯编程demo

    这可以通过将16进制数字转换为字节,然后通过输出流发送。例如,`String command = "0x1A"; byte[] bytes = DatatypeConverter.parseHexBinary(command); outputStream.write(bytes);` 6. 错误处理和关闭串口:在...

Global site tag (gtag.js) - Google Analytics