魅族M9买了一年多,系统没动过。直到某一天再也不能打电话发短信了,就换上了最新的flyme系统。然而之前备份了通讯录不能恢复了。
研究了一下才发现,之前备份了通讯录是在手机的Backup文件夹下,文件Contact/Contact.xml,而flyme不再支持Contact.xml的恢复。但是flyme支持vCard格式(*.vcf)导入。
对于一只程序猿来说,解决这个问题的方法必须是自己写程序。
于是研究了一下魅族通讯录备份文件Contact.xml和vCard(vcf)格式。
Contact.xml:
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<ContactTable>
<Product>M9</Product>
<SoftwareVersion>1.0.1</SoftwareVersion>
<Contact>
<FileAs>张三</FileAs>
<FirstName>张三</FirstName>
<DisplayName>张三</DisplayName>
<PhoneElement IsPrimary="1" Value="15100000000" Type="0" />
</Contact>
<Contact>
<FileAs>李四</FileAs>
<FirstName>李四</FirstName>
<DisplayName>李四</DisplayName>
<PhoneElement IsPrimary="1" Value="15155555555" Type="0" />
</Contact>
</ContactTable>
vCard:
BEGIN:VCARD
VERSION:2.1
FN:张三
TEL;CELL:15100000000
END:VCARD
BEGIN:VCARD
VERSION:2.1
FN:李四
TEL;CELL:15155555555
END:VCARD
Contact.xml转vcf文件(Java):
public static void main(String[] args) throws DocumentException, IOException
{
// DOM4J读取Contact.xml文件
SAXReader reader = new SAXReader();
Document document = reader.read(new File("H:\\Backup\\20130422200137M9\\Contact\\Contact.xml"));
Element root = document.getRootElement();
// 联系人List
List<?> contacts = root.elements("Contact");
// vcf文件内容
StringBuilder sb = new StringBuilder();
// 遍历xml中的每个联系人,往vcf字符串中追加
for(Object contactObj : contacts)
{
Element eleContact = (Element) contactObj;
String name = eleContact.elementText("DisplayName");
String number = eleContact.element("PhoneElement").attribute("Value").getValue();
sb.append("BEGIN:VCARD\nVERSION:2.1\n");
sb.append("FN:");
sb.append(name);
sb.append("\nTEL;CELL:");
sb.append(number);
sb.append("\nEND:VCARD\n");
}
// 字符串写入vcf文件
FileUtils.writeStringToFile(new File("H:\\test.vcf"), sb.toString(), "utf-8");
}
上面的代码需要两个jar文件:dom4j-1.6.1.jar和commons-io-2.4.jar。
最后把生成的vcf文件拷贝到手机中,在手机中打开这个vcf文件,就可以恢复以前所有的联系人了。
由于vCard文件比较通用,所以上面的代码应该还能实现魅族的Contact.xml备份导入联系人到魅族MX或者其他各种支持vCard的手机中。
作者:叉叉哥 转载请注明出处:http://blog.csdn.net/xiao__gui/article/details/8843421
分享到:
相关推荐
全面解读txt excel word转vcard并导入手机通讯录方法.doc
小米XML文件转Vcard.zip
通讯录文件vcard解析源码,纯 C语言实现,适合于消费电子类产品应用。
通讯录助手apk_com.vector123.vcard.apk
利用vCard实现电子名片中的二维码保存个人信息到通讯录,相关文档参考https://blog.csdn.net/super_DuoLa/article/details/116713322
此版本在原作者基础上增加通讯录管理大师DAT格式,功能更多,更加完美解决从仅支持JAVA的手机到智能手机的通讯录管理问题。 手机电话簿转换工具(VCF_CSV_DAT) │ CSV格式.csv │ DAT格式.dat │ VCF格式.vcf │ 手机...
这样就完成了导出,在硬盘上生成一个叫“联系人.vcf”的文件。 八、导出的联系人文件copy到小5的储存卡下,再进入系统,选择导入导出-从SD卡导入,即完成联系人的转移了。 九、想再A系统的通讯录、来电显示和短信里...
Box通讯录XML格式转换为vCard。 网页界面/在线版本 可以使用。 您也可以。 CLI用户安装 需要 。 从npm安装软件包。 npm i -g fritz-xml-2vcard fritz-xml-2vcard /path/to/contact.xml /path/to/output/dir 开发...
android源码 联络人的备份和恢复功能 采用Vcard存储
A Java API binding of the IETF Mime-Dir and vCard RFC s. This package defines implementation neutral Mime-Dir and vCard Java interfaces for exposing data objects corresponding to those defined by the ...
android通讯录功能,实现了如下功能 1.检索手机存入联系人并显示 2.右侧导航条根据拼音字母检索联系人 3.通过搜索栏实时搜索联系人 4.vCard格式导出并发送分享功能 5.检测系统通讯录是否有变化,有变化在通知栏通知,并...
将手机联系人备份从vCard3.0文件转为vCard2.1文件(旧式手机需要) 。 在Python3.7下可运行,不支持头像转换。
XML与VCF格式的手机电话本转换工具,小巧方便实用,实在不可多得,分享一下下!记得给好评哟!
文件、xml 文件、vCard 文件或其他自定义格式文件,但不能是 Excel 文件)。不 使用数据库。 2. 通讯录中每个项目包括: ( 1)基本信息:姓名、手机号码、电子邮箱、生日、所属组、备注、像片。 ( 2)...
TXT转换vcard工具,TXT免费转换vcard格式,也可以vcard格式免费转换TXT。本软件是开源的,下载打开就能用,直接导入文件进行转换即可!
手机通讯录备份软件及源码都在上边 适合nokia s40及s60平台,使用到诺基亚的开发包 其他手机暂不支持 (内附源码 资源,及可执行jar文件) 开发环境eclipse sdk nokia S40 6th
ez-vcard, 用于Java的vCard分析程序库 位 vcard持续集成: 代码覆盖率: Maven 中心: 聊天室: 许可证: ez vCard是用Java编写的vCard库。 它可以以多种格式读取和写入 vcard 。 因为
记事本txt号码转成手机通讯录格式文件,方便快速导入记事本中的手机,提高工作效率,用于txt转VCard或者,txt转vcf文件的格式 具体使用教程:https://blog.csdn.net/bbyn3316/article/details/111387146
手机通讯录格式转换,CL vCard 与 CSV 转换,vCard 到 LDIF/CSV的转换