知识养成了思想,思想同时又在融化知识。这篇文章主要讲述Android中读取手机联系人相关的知识,希望能为你提供帮助。
【Android中读取手机联系人】主要就是用 内容解析者来处理问题:
首先应该先清楚android手机联系人的数据库:读取主要用了3张表:
Table Name | 作用 |
contacts | 记录联系人id,(有几列即表示有几个联系人) |
mimeTypes | 存储类型比对(为了节省数据库的空间) |
data | 联系人信息保存在此表中 |
查询过程中,第一循环有几个联系人就执行几次,但是第二次循环每个联系人最多执行11次,依据你的联系人存储信息不同而不同的
一段代码飘过:
ContentResolver contentResolver = getContentResolver(); // 用cursor对象查询 Cursor cursor = contentResolver.query(Uri .parse("content://com.android.contacts/raw_contacts"), new String[] { "contact_id" }, null, // 查询条件 "a=?" null, // 提供问号的值 null); //循环游标 while (cursor.moveToNext()) { // cursor的索引值从0开始的 String id = cursor.getString(0); // 根据唯一性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< String, String> hm = new HashMap< String, String> (); while (indexCursor.moveToNext()) { //System.out.println(indexCursor.getString(0) +" "+ indexCursor.getString(1)); hm.put(indexCursor.getString(1),indexCursor.getString(0)); } contactList.add(hm); indexCursor.close(); } // 关闭游标 cursor.close(); //子线程里发送更新ui的数据 Message msg = new Message(); msg.what = 1; mHandler.sendMessage(msg);
推荐阅读
- 实现Android Native端爆破源码
- SpringBoot中logback.xml使用application.yml中属性
- 音视频Android CallLib 开发指南
- Spring boot之SpringApplicationBuilder,@@Configuration注解,@Component注解
- Xamarin.Android 压缩图片并上传到WebServices
- 关于android h5内嵌网页报TypeError: Object.entries is not a function
- 小程序开发坑之Android真机运行,地图上面不显示元素
- scalaapply和update
- Android studio 报错AAPT2 error