获取手机联系人数据方法
16lz
2021-01-26
获取手机联系人数据方法
/** * 获取系统联系人数据方法 */private void initData() {//因为读取系统联系人,可能是一个耗时操作,放置到子线程中处理new Thread(){public void run() {//1,获取内容解析器对象ContentResolver contentResolver = getContentResolver();//2,做查询系统联系人数据库表过程(读取联系人权限)Cursor cursor = contentResolver.query(Uri.parse("content://com.android.contacts/raw_contacts"),new String[]{"contact_id"}, null, null, null);contactList.clear();//3,循环游标,直到没有数据为止while(cursor.moveToNext()){String id = cursor.getString(0);//Log.i(tag, "id = "+id);//4,根据用户唯一性id值,查询data表和mimetype表生成的视图,获取data以及mimetype字段Cursor indexCursor = contentResolver.query(Uri.parse("content://com.android.contacts/data"), new String[]{"data1","mimetype"}, "raw_contact_id = ?", new String[]{id}, null);//5,循环获取每一个联系人的电话号码以及姓名,数据类型HashMap hashMap = new HashMap();while(indexCursor.moveToNext()){String data = indexCursor.getString(0);String type = indexCursor.getString(1);//6,区分类型去给hashMap填充数据if(type.equals("vnd.android.cursor.item/phone_v2")){//数据非空判断if(!TextUtils.isEmpty(data)){hashMap.put("phone", data);}}else if(type.equals("vnd.android.cursor.item/name")){if(!TextUtils.isEmpty(data)){hashMap.put("name", data);}}}indexCursor.close();contactList.add(hashMap);}cursor.close();};}.start();}
更多相关文章
- 一句话锁定MySQL数据占用元凶
- ContentProvider简单用法
- OpenGL播放yuv数据流(着色器SHADER)-android(一)
- MediaMetadataRetriever类、方法以及使用详解
- Android中如何获取系统中所有的应用程序
- Android学习笔记(十四)
- Android(安卓)之AES加密,解密与后台进行数据交互
- https://maven.google.com 无法访问,无法获取 .pom
- Android获取当前的城市名的方法