魅族M9买了一年多,系统没动过。直到某一天再也不能打电话发短信了,就换上了最新的flyme系统。然而之前备份了通讯录不能恢复了。
研究了一下才发现,之前备份了通讯录是在手机的Backup文件夹下,文件Contact/Contact.xml,而flyme不再支持Contact.xml的恢复。但是flyme支持vCard格式(*.vcf)导入。
对于一只程序猿来说,解决这个问题的方法必须是自己写程序。
于是研究了一下魅族通讯录备份文件Contact.xml和vCard(vcf)格式。
Contact.xml:
M9
1.0.1
张三
张三
张三
李四
李四
李四
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的手机中。
相关文章
总结
如果觉得编程之家网站内容还不错,欢迎将编程之家网站推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您喜欢交流学习经验,点击链接加入交流1群:1065694478(已满)交流2群:163560250