Android基礎第五天易忘部分

我叫阿狸貓發表於2014-11-30

內容提供者的事務:

private Uri rawContactsUri = Uri.parse("content://com.android.contacts/raw_contacts");
private Uri datasUri = Uri.parse("content://com.android.contacts/data");

public void insertContact() {
	try {
		ArrayList<ContentProviderOperation> list = new ArrayList<ContentProviderOperation>();//所有事務的操作都在這個集合裡
		ContentProviderOperation operation1 = ContentProviderOperation.newInsert(rawContactsUri).withValue("_id", null).build();
		ContentProviderOperation operation2 = ContentProviderOperation.newInsert(datasUri)
				.withValueBackReference("raw_contact_id", 0)//把同組第一個操作的結果作為值,因為這4個操作是一個事務,第一個操作還沒執行第二個操作又需要用到第一個操作的返回值
				.withValue("mimetype", "vnd.android.cursor.item/name")//要新增的內容
				.withValue("data1", "皮卡丘")//要新增的內容
				.build();
		ContentProviderOperation operation3 = ContentProviderOperation.newInsert(datasUri)
				.withValueBackReference("raw_contact_id", 0)
				.withValue("mimetype", "vnd.android.cursor.item/phone_v2")
				.withValue("data1", "15555555555")
				.build();
		ContentProviderOperation operation4 = ContentProviderOperation.newInsert(datasUri)
				.withValueBackReference("raw_contact_id", 0)
				.withValue("mimetype", "vnd.android.cursor.item/email_v2")
				.withValue("data1", "888@gmail.com")
				.build();
		list.add(operation1);
		list.add(operation2);
		list.add(operation3);
		list.add(operation4);
		getContentResolver().applyBatch("com.android.contacts", list);//執行事務,新增聯絡人
		Toast.makeText(getApplicationContext(), "新增成功", Toast.LENGTH_SHORT).show();
	} catch (Exception e) {
		e.printStackTrace();
	}
}


相關文章