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); } }
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories