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 ...
随机推荐
- oracle 连接查询,和(+)符号的用法
--连接查询 左链接.右链接,全链接 --内链接select e.account 用户名, e.empname 名称, c.comname 公司名称 from employee e inner jo ...
- jQuery cdn使用介绍
如果您不希望下载并存放jQuery,那么也可以通过 CDN(内容分发网络)引用它,下面是具体实现,有类似需求的各位可以参考下哈,希望对你有所帮助 如果您不希望下载并存放 jQuery,那么也可以通 ...
- MySQL Server-id踩到的坑
最近踩到一个说大不大,说小不小的坑,在此分享出来给各位同学.事情是这样的,线上有2台服务器,1主1从.A -> B,B服务器从A服务器同步数据.每天使用xtrabackup在B服务器上面进行全备 ...
- jquery_简单介绍
jquery是一个优秀的javascript的库. jquery对象是通过jquery包装DOM对象产生的对象 配置jquery 在<head> <script src=&quo ...
- 真机调试---打包6plus出现问题
问题: dyld: Library not loaded: @rpath/libswiftCore.dylib Referenced from: /private/var/mobile/Contain ...
- python的内存管理机制
先从较浅的层面来说,Python的内存管理机制可以从三个方面来讲 (1)垃圾回收 (2)引用计数 (3)内存池机制 一.垃圾回收: python不像C++,Java等语言一样,他们可以不用事先声明变量 ...
- linux一些名词
硬链接: 同一个索引节点的两个文件 ln a b //创建a的连接文件b,删除a,不失效软连接: 不同索引节点,相当于一个快捷方式ln -s a b,删除a,b失效 网络协议: 网络协议就是通信规则的 ...
- 【iCore3 双核心板】iCore3封装库及使用说明V1.0
iCore3封装库及使用说明下载链接: http://pan.baidu.com/s/1pLq23Qb iCore3 购买链接: https://item.taobao.com/item.htm?id ...
- Maven Profile
profile可以让我们定义一系列的配置信息,然后指定其激活条件.这样我们就可以定义多个profile,然后每个profile对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果. p ...
- eclipse创建web项目
总结为3步: 必备环境: Eclipse jee Tomcat 1.创建services 2.创建dynamic web project项目 3.WebContent路径下创建index.jsp 运行 ...