添加权限:
手机中系统联系人数据库存放在:
data/data/com.android.providers.contacts/databases/contacts2.db
查找里面的两张关联表:raw_contacts, data
1.在raw_contacts中得到所有联系人的_id
2.在data表中根据raw_contacts中取到的_id查询对应raw_contact_id的数据
content://com.android.contacts/raw_contacts
content://com.android.contacts/data
/**
* 查询联系人
*/
private void queryContacts(){
// 1.在raw_contacts表中得到所有联系人的_id
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
ContentResolver resolver = getContentResolver();
Cursor cursor = resolver.query(uri, new String[]{"_id"}, null, null, null);
if(cursor !=null && cursor.getCount()>0){
while (cursor.moveToNext()){
int id = cursor.getInt(0);
// 2.在data表中根据raw_contact_id获得对应_id的联系人的信息
Cursor c = resolver.query(dataUri, new String[]{"mimetype", "data1"}, "raw_contact_id = ?", new String[]{String.valueOf(id)}, null);
if (c!=null && c.getCount()>0){
while(c.moveToNext()){
String mimetype = c.getString(0);
String data1 = c.getString(1);
if("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
Log.i("TAG", "号码: " + data1);
} else if("vnd.android.cursor.item/name".equals(mimetype)) {
Log.i("TAG", "姓名: " + data1);
} else if("vnd.android.cursor.item/email_v2".equals(mimetype)) {
Log.i("TAG", "邮箱: " + data1);
}
}
}
c.close();;
}
}
cursor.close();
}
/**
* 添加联系人
*/
private void addContact(){
Uri uri = Uri.parse(“content://com.android.contacts/raw_contacts”);
Uri dataUri = Uri.parse(“content://com.android.contacts/data”);
ContentResolver resolver = getContentResolver();
// 1. 在raw_contacts表中添加一个记录
// 取raw_contacts表中contact_id的值
Cursor cursor = resolver.query(uri, new String[]{"contact_id"}, null, null, "contact_id desc limit 1");
if (cursor!=null && cursor.moveToFirst()){
int contact_id = cursor.getInt(0);
contact_id++;
cursor.close();
ContentValues values = new ContentValues();
values.put("contact_id", contact_id);
resolver.insert(dataUri, values);
// 2. 根据上面添加记录的id, 取data表中添加三条数据
// 存号码
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/phone_v2");
values.put("data1", "10086");
values.put("raw_contact_id", contact_id);
resolver.insert(dataUri, values);
// 存姓名
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/name");
values.put("data1", "中国移动");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);
// 存邮箱
values = new ContentValues();
values.put("mimetype", "vnd.android.cursor.item/email_v2");
values.put("data1", "10086@kengni.com");
values.put("raw_contact_id", contact_id);
getContentResolver().insert(dataUri, values);
}
}