您的位置:首页 > 移动开发 > Android开发

android学习笔记-读取手机联系人

2015-07-26 11:48 561 查看
1.数据源

联系人信息是 在 /data/data/com.android.prodivers.contacts 中的数据库 contacts2.db

表: row_contacts 记录联系人的id

视图: view_data  字段:data1记录了电话号码或联系人姓名    mimetype记录类型是号码或姓名(具体看字段值)

2.获取方式和code

(1)内容提供者URI :

        content://com.android.contacts/raw_contacts   -> 获取 表 row_contacts中的信息

content://com.android.contacts/data                 -> 获取 视图 view_data中的信息

(2)code:private List<Map<String, String>> GetContacts() {
List<Map<String, String>> listResu = new ArrayList<Map<String, String>>();
// 拿到内容解析者
ContentResolver resolver = getContentResolver();
// 获取 row_contacts中的id (联系人的id)
Cursor cursor = resolver.query(
Uri.parse("content://com.android.contacts/raw_contacts"),
new String[] { "_id" }, null, null, null);

while (cursor.moveToNext()) {
Map<String, String> hashContacts = new HashMap<String, String>();
String contectId = cursor.getString(0); // 拿到联系人id
// 获取 view_data中的姓名和号码
Cursor cursorData = resolver.query(
Uri.parse("content://com.android.contacts/data"),
new String[] { "mimetype", "data1" }, "contact_id="
+ contectId, null, null);

while (cursorData.moveToNext()) {
// 判断mimetype类型 如果是电话号码
if (cursorData.getString(0).equals(
"vnd.android.cursor.item/phone_v2")) {
hashContacts.put("phone", cursorData.getString(1));
// 如果是姓名
} else if (cursorData.getString(0).equals(
"vnd.android.cursor.item/name")) {
hashContacts.put("name", cursorData.getString(1));
}
}
listResu.add(hashContacts);
cursorData.close();
}
cursor.close();
return listResu;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: