Android基础第五天易忘部分

本文介绍了一种使用ContentProvider批量插入联系人的方法。通过创建一系列ContentProviderOperation实例,并将这些操作作为一个事务来执行,可以有效地添加包含姓名、电话号码和电子邮件等信息的多个联系人。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

内容提供者的事务:

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();
	}
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值