android中ContentProvider获取联系人 总结
35.内容提供者:ContentResolver
    用内容提供者来获取联系人信息
	35-1:权限
		<!-- 对联系人的读、写权限 -->
    		<uses-permission android:name="android.permission.READ_CONTACTS" />
    		<uses-permission android:name="android.permission.WRITE_CONTACTS" />
	35-2:新建实体类存放联系人
		int c_id;
		String c_name;
		String c_phone;
		String c_email;
		set和get方法以及构造方法
	35-3:新建Uri
		Uri uri = ContactsContract.Contacts.CONTENT_URI;//联系人姓名
		Uri uriPhone = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//联系人电话
		Uri uriEmail = ContactsContract.CommonDataKinds.Email.CONTENT_URI;//联系人邮箱
	35-4:新建ContentResolver
		ContentResolver resolver = this.getContentResolver();
	35-5:用邮标来获取联系人名字
		35-5-1:新建地址,通过邮标查询
			Cursor cursor = resolver.query(uri, null, null, null, null);
		35-5-2:开始查询
			int contactIdIndex = 0;//联系人ID
			int nameIndex = 0;//联系人姓名
			if(cursor.getCount()>0){
				contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
				nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
			}
		35-5-3:通过邮标的moveToNext()方式获取值
			while(cursor.moveToNext()){
				String contactId = cursor.getString(contactIdIndex);
				name = cursor.getString(nameIndex);
				……(此处还有下文代码)
			}
	35-6:用邮标来获取联系人号码(在上文while循环的基础上继续)
		35-6-1:新建电话号码的Cursor邮标
			//selection相当于SQL中的Where语句吧
			String selection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID + "=" +contactId;
			Cursor phones = this.getContentResolver().query(uriPhone,null, selection, null, null);
			int phoneIndex = 0;
		35-6-2如果查询到了,就返回phoneIndex
			if(phones.getCount()>0){
				phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
			}
		35-6-3:同上获取值
			while(phones.moveToNext()){
				phoneNumber = phones.getString(phoneIndex);
				……(如果还要获取邮箱,同理在此处写上代码)
			}
	35-7:获取邮箱
		35-7-1:新建邮标查询
			String selectionEmail = ContactsContract.CommonDataKinds.Email.CONTACT_ID +"="+contactId;
			Cursor email = this.getContentResolver().query(uriEmail, null, selectionEmail, null, null);
		35-7-2:查询并返回
			int emailIndex = 0;
			if(email.getCount()>0){
				emailIndex = email.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA);
			}
		35-7-3:同上获取值
			while (email.moveToNext()) {
				Email = email.getString(emailIndex);
			}
如果觉得看得麻烦,可以直接用下面现成的代码:
	注:请加权限及实例
Toast.makeText(getApplicationContext(), "正在获取信息", 0).show();
		ContentResolver resolver = this.getContentResolver();
		Cursor cursor = resolver.query(uri, null, null, null, null);
		int contactIdIndex = 0;
		int nameIndex = 0;
		Contact contact;
		if (cursor.getCount() > 0) {
			contactIdIndex = cursor.getColumnIndex(ContactsContract.Contacts._ID);
			nameIndex = cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);
		}else{
			Toast.makeText(getApplicationContext(), "您没有联系人信息", 0).show();
		}
		while (cursor.moveToNext()) {
			String contactId = cursor.getString(contactIdIndex);
			name = cursor.getString(nameIndex);
String selection = ContactsContract.CommonDataKinds.Phone.CONTACT_ID+ "=" + contactId;
			Cursor phones = this.getContentResolver().query(uriPhone, null,selection, null, null);
			int phoneIndex = 0;
			if (phones.getCount() > 0) {
				phoneIndex = phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER);
			}
			while (phones.moveToNext()) {
				phoneNumber = phones.getString(phoneIndex);
				Toast.makeText(getApplicationContext(), name+"==="+phoneNumber, 0).show();
				contact = new Contact(name, phoneNumber);
				list.add(contact);
			}
		}
android中ContentProvider获取联系人 总结的更多相关文章
- Android 开发 ContentProvider 获取歌曲列表和联系人的样例
		
ContentProvider(内容提供者)是Android中的四大组件之中的一个. 主要用于对外共享数据.也就是通过ContentProvider把应用中的数据共享给其它应用訪问.其它应用能够通过C ...
 - Android 手机卫士--获取联系人信息并显示与回显
		
前面的文章已经实现相关的布局,本文接着进行相关的功能实现 本文地址:http://www.cnblogs.com/wuyudong/p/5951794.html,转载请注明出处. 读取系统联系人 当点 ...
 - Android中ContentProvider的简单使用
		
1.新建继承ContentProvider的类 package com.wangzhu.demo; import android.content.ContentProvider; import and ...
 - Android学习记录(3)—Android中ContentProvider的基本原理学习总结
		
一.ContentProvider简介 当应用继承ContentProvider类,并重写该类用于提供数据和存储数据的方法,就可以向其他应用共享其数据.虽然使用其他方法也可以对外共享数据 ...
 - android 中怎样获取IMEI号
		
1)在Telephony Framework内部.能够直接使用GSMPhone或GeminiPhone提供的接口. KK之前的版本号: IMEI(International Mobile Equipm ...
 - android中如何获取xml界面里的非自定义属性
		
获取自定义属性大家都很熟悉了,就不多说了(定义declare-styleable,context.obtainStyledAttributes巴拉巴拉...) 下面我们说一下怎么获取非自定义的属性,比 ...
 - Android中Spanner获取选中内容和选中位置,根据位置选择对象
		
作为一名菜鸟,关于spanner获取选中的内容文字代码,网上后很多 但是根据给出的位置来自动选择对象,这个代码一直没找到 后来找人问了问,才知道就一句话的事,特意在这里记录下 array.xml X ...
 - Android 中如何获取 H5 保存在 LocalStorage 的数据
		
主要分三步: 写个接口,接收 Js 回调 添加到 WebView 主动调用 Js 获取 比如我要获取保存在 LocalStorage 中的 userKey 字段: 1.写个接口,接收 Js 回调 pu ...
 - Android中怎样获取SD卡路径
		
很多时候我们需要将我们的数据或者apk保存到SD卡中,但是使用绝对路径可能会遇到错误,怎样解决这个问题呢? 可以通过以下方法获取SD卡的路径: Environment.getExternalS ...
 
随机推荐
- 修改wamp默认网站目录
			
使用WAMP集成环境,如何更改web根目录 做php开发使用WAMP集成环境的同学大部分有过这样的经历: 如果你试图修改web根目录,那么你肯定会想到要修改apache/apache2.2.11/co ...
 - FK JavaScript之:ArcGIS JavaScript添加Graphic,地图界面却不显示
			
使用ArcGIS JavaScript,往地图中添加几个Graphic,基本是与官网示例代码一致.绘制的图形一闪而过之后,就没了 核心代码如下: iniToolBar: function () { t ...
 - C# 文件和文件夹操作
			
一.文件操作 1.File类的常用静态方法: void AppendAllText(string path, string contents),将文本contents附加到文件path中 bool E ...
 - javascript保留关键字
			
1.通用保留关键字 break delete function return typeof case do if switch var catch else in this void continue ...
 - 手机上的页面转换page slider
			
小伙伴们是不是经常在手机上见到“转场"的情况,手机上的页面转换已经不像pc上整体的页面跳转,很多都是利用动画平滑地在页面之间的切换. 那么如何来做页面之间的转换呢?首先要明确的是,所谓的 ...
 - iOS摄像头和相册-UIImagePickerController常用操作
			
在一些应用中,我们需要用到iOS设备的摄像头进行拍照,视频.并且从相册中选取我们需要的图片或者视频. 关于iOS摄像头和相册的应用,可以使用UIImagePickerController类来完成控制. ...
 - wp插件
 - Android动画设计源码地址
			
Android动画设计源码地址 http://blog.csdn.net/shanghaibao123/article/details/45223825
 - JQuery 表单校验插件 validate 使用纪录
			
JS诞生其中一个目的就是将, 服务器端的校验在客户端提前完成, 以避免用户提交数据后, 后台校验报错的糟糕用户体验. 基于JQuery库的有很多优秀的插件, 其中对于浏览器端表单进行验证的基本功能也有 ...
 - Hadoop:搭建hadoop集群
			
操作系统环境准备: 准备几台服务器(我这里是三台虚拟机): linux ubuntu 14.04 server x64(下载地址:http://releases.ubuntu.com/14.04.2/ ...