Android开发:还原通讯录、历史通话记录、短信息记录(insert方法)
1.插入通讯录
[java]
package com.dm.restroe;
import java.util.ArrayList;
import android.content.ContentUris;
import android.content.ContentValues;
import android.content.Context;
import android.net.Uri;
import android.provider.ContactsContract.CommonDataKinds.Email;
import android.provider.ContactsContract.CommonDataKinds.Phone;
import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.provider.ContactsContract.CommonDataKinds.StructuredPostal;
import android.provider.ContactsContract.Data;
import android.provider.ContactsContract.RawContacts;
import com.dm.util.ContactInfo;
public class AddContact {
// private ArrayList<ContactInfo> CIList = new ArrayList<ContactInfo>();
public static String fileName = "";
public AddContact() {
// TODO Auto-generated constructor stub
}
// CIList存储要插入的通话记录内容的类,cx是调用本方法的类的context
public AddContact(ArrayList<ContactInfo> CIList, Context cx) {
// 用于存储联系人的地址信息
String[] address;
for(ContactInfo ci:CIList){
// andress存的内容格式:type+"-"+poBox+"-"+postalCode+"-"+country+"-"+state+"-"+city+"-"+street
address = ci.getCiAddr().split("-");
/**
* 首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
* 这时后面插入data表的数据,只有执行空值插入,才能使插入的联系人在通讯录里面可见
*/
ContentValues values = new ContentValues();
//首先向RawContacts.CONTENT_URI执行一个空值插入,目的是获取系统返回的rawContactId
Uri rawContactUri = cx.getContentResolver().insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
//往data表插入姓名数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE);//内容类型
values.put(StructuredName.GIVEN_NAME, ci.getCiName());
cx.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
//往data表插入电话数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE);
values.put(Phone.NUMBER, ci.getPhoneNums());
values.put(Phone.TYPE, Phone.TYPE_MOBILE);
cx.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
//往data表插入Email数据
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, Email.CONTENT_ITEM_TYPE);
values.put(Email.DATA, ci.getCiEmail());
values.put(Email.TYPE, Email.TYPE_WORK);
cx.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
//往data表插入Address数据
switch(Integer.valueOf(address[0])){
case 1: // TYPE_HOME
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
values.put(StructuredPostal.POBOX, address[1]);
values.put(StructuredPostal.TYPE, StructuredPostal.TYPE_HOME);
cx.getContentResolver().insert(android.provider.ContactsContract.Data.CONTENT_URI, values);
values.clear();
values.put(Data.RAW_CONTACT_ID, rawContactId);
values.put(Data.MIMETYPE, StructuredPostal.CONTENT_ITEM_TYPE);
补充:移动开发 , Android ,