Android通讯录操作
- 第一步:申请权限:Manifest.permission.WRITE_CONTACTS 。
- 第二步:查询通讯录,代码如下:
Cursor cursor = getContentResolver().query(ContactsContract.RawContacts.CONTENT_URI, null, null, null, null);
while (cursor.moveToNext()) {
int id = cursor.getInt(cursor.getColumnIndex(ContactsContract.RawContacts._ID));
String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Data.DISPLAY_NAME));
String phone = null;
Cursor phoneCursor = getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,
null, ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{
String.valueOf(id)}, null);
if (phoneCursor.moveToFirst()) {
phone = phoneCursor.getString(phoneCursor.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));
}
phoneCursor.close();
Log.d("vv","====name:" + name + "=====phone:" + phone);
}
cursor.close(); //关闭游标
- 添加通讯录,代码如下:
// 首先向raw_contacts表中插入一条空记录,目的是获取raw_contact_id字段
ContentValues values = new ContentValues();
Uri rawContactUri = getContentResolver().insert(ContactsContract.RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);
//添加姓名
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.StructuredName.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);
Uri nameUri = getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
// 添加 手机号
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
Uri phoneUri = getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
//添加备注信息
values.clear();
values.put(ContactsContract.Data.RAW_CONTACT_ID, rawContactId);
values.put(ContactsContract.Data.MIMETYPE, ContactsContract.CommonDataKinds.Note.CONTENT_ITEM_TYPE);
values.put(ContactsContract.CommonDataKinds.Note.NOTE, "备注项信息");
getContentResolver().insert(ContactsContract.Data.CONTENT_URI, values);
- 第三步,修改通讯录,代码如下:
ContentValues values = new ContentValues();
values.put(ContactsContract.CommonDataKinds.StructuredName.GIVEN_NAME, name);
values.put(ContactsContract.CommonDataKinds.Phone.NUMBER, phone);
int result = getContentResolver().update(ContactsContract.Data.CONTENT_URI, values,
ContactsContract.Data.RAW_CONTACT_ID + "=?", new String[]{
String.valueOf(id)}); id为通过Cursor查询出来的id
if (result > 0) {
toast("更新成功");
} else {
toast("更新失败");
}
- 第四步,删除通讯录,代码如下:
int result = getContentResolver().delete(ContactsContract.RawContacts.CONTENT_URI,
ContactsContract.RawContacts._ID + "=?", new String[]{
String.valueOf(id)}); // id为通过Cursor查询出来的id
if (result > 0) {
toast("删除成功");
} else {
toast("删除失败");
}
完毕