魅族手机通讯录Contact.xml备份在flyme上的恢复(Java实现xml转v
魅族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:Backup20130422200137M9ContactContact.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:VCARDnVERSION:2.1n"); sb.append("FN:"); sb.append(name); sb.append("nTEL;CELL:"); sb.append(number); sb.append("nEND:VCARDn"); } // 字符串写入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://www.52php.cn/article/p-hqssialw-mb.html (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |