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

来源:互联网 发布:txt文本听书软件 编辑:程序博客网 时间:2024/04/26 04:55

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;}



0 0
原创粉丝点击