今天将手机升级成姜饼(2.3),审计完,发现电话薄都没了,还好到outlook中找到以前用htc同步的数据。发现,outlook太悲剧了,不能完全导入,最后自己写了个小小小程序,outlook电话薄里直接copy出的格式格式为:
GPS导航
个人信息:
地址:
电话:
传真:
移动电话: 13815203***
网页:
业务信息:
职务:
部门:
办公室:
公司:
地址:
电话:
传真:
寻呼机:
网页:
附注:
通过java代码,转换成 PhoneNumber 对象
package com.lazy.upup.model; /** * <P> [功能] 电话号码</P> * <P> [说明] </P> * <P> [备注] </P> * <P> [环境] android 2.1 以上</P> * @author Lazy * @version ver 1.0 * @2011-4-16 下午08:38:58 */ public class PhoneNumber { private int id; //在data表里的ID private int raw; //在raw里的ID private String name1; private String name2; private String phoneNumber1; private String phoneNumber2; private String email; public String getName1() { return name1; } public void setName1(String name1) { this.name1 = name1; } public String getName2() { return name2; } public void setName2(String name2) { this.name2 = name2; } public String getPhoneNumber1() { return phoneNumber1; } public void setPhoneNumber1(String phoneNumber1) { this.phoneNumber1 = phoneNumber1; } public String getPhoneNumber2() { return phoneNumber2; } public void setPhoneNumber2(String phoneNumber2) { this.phoneNumber2 = phoneNumber2; } public String getEmail() { return email; } public void setEmail(String email) { this.email = email; } public int getId() { return id; } public void setId(int id) { this.id = id; } public int getRaw() { return raw; } public void setRaw(int raw) { this.raw = raw; } }
主要导入的方法代码:
/** * 将电话号码人名写入电话薄 * 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId * 这时后面插入data表的依据,只有执行空值插入,才能使插入的联系人在通讯录里面可见 */ public static void addPeopleNumber(Activity activity ,PhoneNumber pn){ ArrayList<ContentProviderOperation> ops = new ArrayList<ContentProviderOperation>(); int rawContactInsertIndex = ops.size(); //首先向RawContacts.CONTENT_URI执行一个空值插入(raw_contacts 表), 为了获取生成的联系人 ID ops.add(ContentProviderOperation.newInsert(RawContacts.CONTENT_URI) .withValue(RawContacts.ACCOUNT_TYPE, null) .withValue(RawContacts.ACCOUNT_NAME, null) .build()); //姓名 ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) .withValue(StructuredName.GIVEN_NAME, pn.getName1()) .build()); //更新手机号码:Data.RAW_CONTACT_ID 获取上一条语句插入联系人时产生的 ID ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, pn.getPhoneNumber1()) // "data1" .withValue(Phone.TYPE, Phone.TYPE_MOBILE) .withValue(Phone.LABEL, "手机号1") .build()); //手机号码2 if(pn.getPhoneNumber2()!=null && !"".equals(pn.getPhoneNumber2().trim())){ ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue(Phone.NUMBER, pn.getPhoneNumber2()) // "data1" .withValue(Phone.TYPE, Phone.TYPE_HOME) .withValue(Phone.LABEL, "手机号2") .build()); } //电子邮件 if(pn.getEmail()!=null){ ops.add(ContentProviderOperation.newInsert(android.provider.ContactsContract.Data.CONTENT_URI) .withValueBackReference(Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE) .withValue(Email.DATA, pn.getEmail()) .withValue(Email.TYPE, Email.TYPE_WORK) .build()); } try { ContentProviderResult[] results = activity.getContentResolver().applyBatch(ContactsContract.AUTHORITY, ops); for(ContentProviderResult result : results){ Log.d(Constant.TAG, result.uri.toString()); } } catch (RemoteException e) { e.printStackTrace(); } catch (OperationApplicationException e) { e.printStackTrace(); } }