从Android的contacts2.db中导出vcard联系人方法,只简单说明下步骤
1:拿到contacts2.db文件
两种方法
(1):通过手机的RE管理工具将目录data/data/com.android.providers.contacts/databases/contacts2.db文件拷贝出来
(2):通过Recovery备份的文件data.img用unyaff程序解压缩后,可找到对应的data/data/com.android.providers.contacts/databases/contacts2.db文件,该方法适用于进不了系统的情况
2:使用java sqlite驱动包
下载地址:http://www.ch-werner.de/javasqlite/
3:使用android的vcard jar包
下载地址:http://code.google.com/p/android-vcard/
4:编写java代码进行数据的导出
(1):先读取数据库中contacts表,生成用户名和ID的对象
(2):遍历用户列表,根据用户ID读取raw_contacts和data表获取号码、地址等信息(两个表需要关联)
判断表中mimetype_id类型,一般mimetype_id值的定义:3: 地址 data1 5: 手机号码 data1 8: 名称 data1全名 data2名 data3姓 9:其他信息 data1地址 data4职位
(3):遍历用户列表,将用户信息导出到vcard文件
附上代码:
UserData
package org.rwl;
import java.util.ArrayList;
import java.util.List;
/**
* Created with PolarRwl.
* User: polarrwl
* Date: 13-5-23
* Time: 下午3:46
* To change this template use File | Settings | File Templates.
*/
public class UserData {
private String userid;
private String name;
private String email;
private String address;
private String duty;
private List<String> phones = new ArrayList<String>();
public String getUserid() {
return userid;
}
public void setUserid(String userid) {
this.userid = userid;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public List<String> getPhones() {
return phones;
}