读取联系人数据库
1 获取 联系人内容解析器
2 创建要访问表的Uri
3 通过内容解析器查询联系人数据库
4 raw_contacts表获取contact_id,data表通过contact_id获取mimetype与data1
2 创建要访问表的Uri
3 通过内容解析器查询联系人数据库
1 获取 联系人内容解析器
2 创建要访问表的Uri
3 通过内容解析器查询联系人数据库
4 raw_contacts表获取contact_id,data表通过contact_id获取mimetype与data1
---------------------------------------------------------------------------------------------------------------------------------
1 获取 联系人内容解析器
// 获取联系人内容解析器
ContentResolver resolver = getContentResolver();
2 创建要访问表的Uri
// 表的URL 1.raw_contacts 2.data
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
3 通过内容解析器查询联系人数据库
// 查询表 raw_contacts,获取结果
Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
null, null, null);
private List<Map<String, String>> getContacts() {
// 获取系统联系人
// 所有联系人
List<Map<String, String>> list = new ArrayList<Map<String, String>>();
// 获取联系人内容解析器
ContentResolver resolver = getContentResolver();
// 表的URL 1.raw_contacts 2.data
Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
Uri dataUri = Uri.parse("content://com.android.contacts/data");
// 查询表 raw_contacts,获取结果
Cursor cursor = resolver.query(uri, new String[] { "contact_id" },
null, null, null);
while (cursor.moveToNext()) {
String contact_id = cursor.getString(0);
if (!TextUtils.isEmpty(contact_id)) {
// 查询id对应联系人信息,继续查询表 data
Cursor dataCursor = resolver.query(dataUri, new String[] {
"mimetype", "data1" }, "contact_id=?",
new String[] { contact_id }, null);
Map<String, String> map = new HashMap<String, String>();
while (dataCursor.moveToNext()) {
String mimetype = dataCursor.getString(0);
String data1 = dataCursor.getString(1);
if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
// phone
map.put("phone", data1);
} else if ("vnd.android.cursor.item/name".equals(mimetype)) {
// name
map.put("name", data1);
}
}
list.add(map);
dataCursor.close();
}
}
cursor.close();
return list;
}