//获取联系人
Uri rawContacts = Uri.parse("content://com.android.contacts/raw_contacts");
ContentResolver contentResolver = getContentResolver();
Cursor cursor = contentResolver.query(rawContacts, null, null, null, null);
while (cursor.moveToNext()) {
String contactId = cursor.getString(cursor.getColumnIndex("contact_id"));
Uri dataUri = Uri.parse("content://com.android.contacts/data");
System.out.println("联系人id = " + contactId);
Cursor dataCursor = contentResolver.query(dataUri, null, "contact_id=?", new String[]{contactId}, null);
while (dataCursor.moveToNext()) {
System.out.println("联系人名称="+dataCursor.getString(dataCursor.getColumnIndex("data1")));
System.out.println("数据类型="+dataCursor.getString(dataCursor.getColumnIndex("mimetype")));
}
dataCursor.close();
System.out.println("——————————————");
}
cursor.close();

通信录的相关数据也保存在数据库文件中,保存的路径为:/data/data/com.android.providers.contacts/databases/contacts2.db。我们在通讯录界面上添加联系人时,内部实际上是通过ContentProvider向数据库中添加记录。通讯录的界面应用与ContentProvider应用是分开的。通讯录界面应用的保存位置为:/data/data/com.android.contacts。

常用的几张表如下:

raw_contacts:存放联系人的ID

字段display_name:存放姓+名的组合,便于快速得到用户的姓名。注意,当向该表添加联系人时该字段是为null的,只有在向data表中添加姓名时,才会发出update语句来更新该字段。

data:存放联系人的详细信息,如姓名、手机等,主要几个字段的含义如下:

字段data1:存放具体数据

字段data2:对于电话号码,存放类型:家庭电话、手机号等,2代表手机号

对于邮箱,存放类型

对于姓名,存放名字部分,data3存放姓氏部分

字段mimetype_id:区分数据的类型,5-电话数据,6-姓名数据,1-email数据,对应表mimetypes中的记录ID

这两个表的对应关系是:raw_contacts 1:N data

mimetypes:数据的类型,如下图:

使用ContentResolver对通信录中的数据进行添加、删除、修改和查询操作,需要加入读写联系人信息的权限

<uses-permissionandroid:name="android.permission.READ_CONTACTS" />

<uses-permissionandroid:name="android.permission.WRITE_CONTACTS" />

文章参考了:http://hi.baidu.com/sonmeika/item/19e46c728f61ab356cc37c46

Android 获取手机联系人信息的更多相关文章

  1. android利用ContentResolver访问者获取手机联系人信息

    转载自:http://www.jb51.net/article/106379.htm 首先需要在AndroidManifest.xml文件中添加权限: <uses-permission andr ...

  2. Expo大作战(三十九)--expo sdk api之 DocumentPicker,Contacts(获取手机联系人信息),Branch

    简要:本系列文章讲会对expo进行全面的介绍,本人从2017年6月份接触expo以来,对expo的研究断断续续,一路走来将近10个月,废话不多说,接下来你看到内容,讲全部来与官网 我猜去全部机翻+个人 ...

  3. android -------- 获取手机设备信息

    最近在开发中,需要用到一些系统信息,总结了一下 /** * Created by zhangqie on 2019/2/26 * Describe: 系统工具类 */ public class Equ ...

  4. Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息

    Android 获取手机信息,设置权限,申请权限,查询联系人,获取手机定位信息 本文目录: 获取手机信息 设置权限 申请权限 查询联系人 获取手机定位信息 调用高德地图,设置显示2个坐标点的位置,以及 ...

  5. Android软件开发之获取通讯录联系人信息

    Android手机的通讯录联系人全部都存在系统的数据库中,如果须要获得通讯里联系人的信息就须要访问系统的数据库,才能将信息拿出来. 这一篇文章我主要带领同学们熟悉Android的通讯录机制. 图中选中 ...

  6. 【转】android 安卓APP获取手机设备信息和手机号码的代码示例

    http://blog.csdn.net/changemyself/article/details/7421476 下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓 ...

  7. android 安卓APP获取手机设备信息和手机号码的代码示例

    下面我从安卓开发的角度,简单写一下如何获取手机设备信息和手机号码 准备条件:一部安卓手机.手机SIM卡确保插入手机里.eclipse ADT和android-sdk开发环境 第一步:新建一个andro ...

  8. android API版本对应的系统版本及Android获取手机和系统版本等信息的代码

    学了这么久的Android,竟然一直对其API对应的名称关系一值搞不清楚,现在网上认真看了下资料,转载一个觉得写得不错的作者的文章,记下来: [背景] 之前折腾android期间,慢慢地知道了,And ...

  9. Android 读取手机联系人、拨号、发送短信及长按菜单的操作

    本示例实现了读取手机联系人,拨号.发送短信及长按出现菜单选项的操作↓ 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下↓ a, main.xml 程序运行的主界面,主要 ...

随机推荐

  1. Adapter 适配器模式

    将一个类的接口转换成客户希望的另外一个接口.Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作. 目标接口(Target):客户所期待的接口.目标可以是具体的或抽象的类,也可 ...

  2. onitemcommand 的作用以及onitemdatabound的具体作用

    Repeater控件.DataList控件的属性:OnItemCommand 当在ItemTemplate 中所宣告的Button 或LinkButton 控件触发事件时,如果该控件CommandNa ...

  3. ElastciSearch常用APi

    列出所有的索引: GET /_cat/indices?v 删除索引 DELETE /customer?pretty

  4. JavaSE生成随机数

    今天呢,老师讲了一下怎么用jvm实现随机数(本人对此很感兴趣),一个简单的随机100以内整数的代码如下: /** 生成随机数 */ import java.util.Random; public cl ...

  5. js单击显示元素,点击元素本身以外隐藏元素

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. 【制作镜像】virsh

    首先进入到图形界面 常用virsh指令: 1)virsh list 列出当前虚拟机列表,不包括未启动的 2)virsh list --all 列出所有虚拟机,包括所有已经定义的虚拟机 3)virsh ...

  7. 暑假集训(1)第三弹 -----Dungeon Master(Poj2251)

    Description You are trapped in a 3D dungeon and need to find the quickest way out! The dungeon is co ...

  8. centOS 6.4 vsftpd 配置

    ###########配置流程########### 1 新建一个ftp用户,为了跟vsftp的虚拟用户对应 #useradd  -d /home/vftpuser   -s /sbin/nologi ...

  9. 做个无边框winform窗体,并美化界面

    今天下午程序写完,有些时间就搞下界面美化,做个无框窗体.首先把窗体的FormBorderStyle设置为None,就变成无框的啦,不过你会发现这样窗体上就没有原来的最大最小化和关闭按钮了哦,所以要自己 ...

  10. 手机摇一摇效果-html5

    1.手机摇一摇效果实现 2.播放声音 <!DOCTYPE html> <html lang="en"> <head> <meta char ...