Android wiki:15.读取系统联系人

来源:互联网 发布:苹果手机免费赚钱软件 编辑:程序博客网 时间:2024/04/28 15:42
/**
     * <h1>读取系统联系人<h1><br>
     * 每个map存放联系人的名称和号码name="zs",phone="123"
     * @return List <Map<String, String>> 联系人集合
     *
     */
    private List<Map<String, String>> getContacts() {

        List<Map<String, String>> list = new ArrayList<Map<String, String>>();
        ContentResolver resolver = this.getContentResolver();

        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");// raw_contact 表的uri
        Uri dataUri = Uri.parse("content://com.android.contacts/data"); // data 表的uri

        Cursor cursor = resolver.query(uri, new String[] { "contact_id" }, null, null, null);
        while (cursor.moveToNext()) {
            String id = cursor.getString(0);
            if (id != null) {
                Map<String, String> map = new HashMap<String, String>();

                Cursor dataCursor = resolver.query(dataUri, new String[] { "data1", "mimetype" }, "raw_contact_id=?",
                        new String[] { id }, null);

                while (dataCursor.moveToNext()) {
                    String data = dataCursor.getString(0);
                    String mimetype = dataCursor.getString(1);

                    if ("vnd.android.cursor.item/name".equals(mimetype)) {
                        // 联系人的姓名
                        map.put("name", data);
                    } else if ("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
                        // 联系人的电话号码
                        map.put("phone", data);
                    }
                }
                list.add(map);
                dataCursor.close();
            }
        }
        cursor.close();
        return list;
    }
0 0