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 ...
随机推荐
- *HDU3496 背包DP
Watch The Movie Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)T ...
- css问题 ie7兼容性问题
1.响应式网站用百分比时ie7不兼容:试试将margin:0 10% 改为margin-left:15%; 左边是可以的,但是右边就不行了 2.ie7的span 里的字会出现白色背景 ,是因为没有定高 ...
- bzoj4457: 游戏任务--双层01背包
这题和NOIP的金明的预算方案(?)很像,只不过附件的数量增多了 如果对主件进行一次01背包,再套一层附件的01背包O(n4)肯定会爆.. 所以我们可以先预处理出,对于每个主件,花的时间为k的情况下, ...
- matlab中使用fuzzy工具箱
4步教你学会使用matlab模糊控制工具箱 Matlab模糊控制工具箱为模糊控制器的设计提供了一种非常便捷的途径,通过它我们不需要进行复杂的模糊化.模糊推理及反模糊化运算,只需要设定相应参数,就可以很 ...
- thinkphp打印执行的sql
打印下执行的sql,也就是在执行add或save语句下面写下: echo M()->getlastsql();
- EmguCV 如何从数组中创建出IntPtr
需要添加引用:System.Runtime.InteropServices 举例如下: float[] priors={1,10}; IntPtr intPtrSet = new IntPtr(); ...
- Sharepoint 2013 回收站知识整理
回收站机制可有利于防止内容的永久删除与误删除. 一.SharePoint 2013 回收站包括两种:第一回收站(End user Recycle Bin items)与 第二回收站(Deleted f ...
- ios-高德、百度后台定位并上传服务器
一.配置高德或百度的后台定位框架和代码(略). 二.配置app不被系统kill,定时获取地理位置信息,并上传服务器(AppDelegate里面). 具体代码: 1. - (void)applicati ...
- chomre常用快捷键
Ctrl+T 打开新标签页. 按住 Ctrl 键的同时点击链接.或用鼠标中键(或鼠标滚轮)点击链接. 从后台在新标签页中打开链接. ...
- Linked List Cycle II || LeetCode
/** * Definition for singly-linked list. * struct ListNode { * int val; * struct ListNode *next; * } ...