您的位置:首页 > 移动开发 > Android开发

Android 批量添加联系人

2016-06-25 08:25 399 查看
public class ContactTest extends AndroidTestCase {

public void testRead() {
ContentResolver resolver = getContext().getContentResolver();
Uri rawContactsUri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");

// 先查询raw_contacts表,得到联系人id
Cursor rcCursor = resolver.query(rawContactsUri, new String[] { "_id" }, "contact_id is not null", null, null);
while (rcCursor.moveToNext()) {
long id = rcCursor.getLong(0);
Cursor dataCursor = resolver.query(dataUri, new String[] { "mimetype", "data1" }, "raw_contact_id = ?",
new String[] { id + "" }, null);
while (dataCursor.moveToNext()) {
String type = dataCursor.getString(0);
String data = dataCursor.getString(1);
System.out.println("type:" + type + ",   " + "data: " + data);
}
}
}

// 插入联系人
public void testInsertContact() {
ContentResolver resolver = getContext().getContentResolver();
// 1.向raw_contacts中插入id
ContentValues values = new ContentValues();
Uri url = Uri.parse("content://com.android.contacts/raw_contacts");
Uri newUri = resolver.insert(url, values);
long id = ContentUris.parseId(newUri);

Uri dataUri = Uri.parse("content://com.android.contacts/data");

// 2.向data中插入数据
// 插入名字
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data1", "tom");
resolver.insert(dataUri, values);
// 插入email
values.clear();
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data1", "tom@tom.com");
resolver.insert(dataUri, values);
// 插入phone
values.clear();
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data1", "13578789696");
resolver.insert(dataUri, values);
// 插入address
values.clear();
values.put("raw_contact_id", id);
values.put("mimetype", "vnd.android.cursor.item/sip_address");
values.put("data1", "北京");
resolver.insert(dataUri, values);
}

/**
* 批量操作,相当于开启事务
* @throws RemoteException
* @throws OperationApplicationException
*/
public void testBatchInsert() throws RemoteException, OperationApplicationException{
ContentResolver resolver = getContext().getContentResolver();

ArrayList<ContentProviderOperation> operations = new ArrayList<ContentProviderOperation>();

Uri rawUri = Uri.parse("content://com.android.contacts/raw_contacts");
ContentProviderOperation operation1 = ContentProviderOperation.newInsert(rawUri).withValue("_id", null).build(); //第零个操作,向raw_contacts中插入id
Uri dataUri = Uri.parse("content://com.android.contacts/data");
ContentProviderOperation operation2 = ContentProviderOperation.newInsert(dataUri)
.withValueBackReference("raw_contact_id", 0) //引用第0个操作的数据
.withValue("mimetype", "vnd.android.cursor.item/name")
.withValue("data1", "jack")
.build();
ContentProviderOperation operation3 = ContentProviderOperation.newInsert(dataUri)
.withValueBackReference("raw_contact_id", 0) //引用第0个操作的数据
.withValue("mimetype", "vnd.android.cursor.item/email_v2")
.withValue("data1", "jack@tom.com")
.build();
ContentProviderOperation operation4 = ContentProviderOperation.newInsert(dataUri)
.withValueBackReference("raw_contact_id", 0) //引用第0个操作的数据
.withValue("mimetype", "vnd.android.cursor.item/phone_v2")
.withValue("data1", "13678967412")
.build();
ContentProviderOperation operation5 = ContentProviderOperation.newInsert(dataUri)
.withValueBackReference("raw_contact_id", 0) //引用第0个操作的数据
.withValue("mimetype", "vnd.android.cursor.item/sip_address")
.withValue("data1", "上海")
.build();

operations.add(operation1);
operations.add(operation2);
operations.add(operation3);
operations.add(operation4);
operations.add(operation5);
String authority = "com.android.contacts";
resolver.applyBatch(authority, operations);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android