android获取手机联系人信息(电话,邮箱,姓名,头像)
在我们开发应用程序时,通常都会用到获取手机联系人信息这一十分常用的功能,最近项目里也要实现此功能,想到以后的APP还十分可能还有此功能,就干脆把这个小功能放到一个类中去,这样以后再遇到这个需求就不需要再去写代码了,直接把这个类拷过来就可以用了.
以下是获取联系人demo的效果图,比较简陋,能说明问题就好.
以一个列表的形式显示所有联系,如果有头像则显示头像,没有头像则显示APP默认icon..
下面是封装好的类代码:
/*** @author renzhiqiang 获取手机联系人姓名,电话,邮箱,头像*/
public class GetContacts {private static ArrayList<MyContacts> getAllContacts(Context context) {ArrayList<MyContacts> contacts = new ArrayList<MyContacts>();Cursor cursor = context.getContentResolver().query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);while (cursor.moveToNext()) {//新建一个联系人实例MyContacts temp = new MyContacts();String contactId = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts._ID));String name = cursor.getString(cursor.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME));temp.name = name;//获取联系人所有电话号Cursor phones = context.getContentResolver().query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,ContactsContract.CommonDataKinds.Phone.CONTACT_ID + " = "+ contactId, null, null);while (phones.moveToNext()) {String phoneNumber = phones.getString(phones.getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));temp.phones.add(phoneNumber);}phones.close();//获取联系人所有邮箱.Cursor emails = context.getContentResolver().query(ContactsContract.CommonDataKinds.Email.CONTENT_URI,null,ContactsContract.CommonDataKinds.Email.CONTACT_ID + " = "+ contactId, null, null);while (emails.moveToNext()) {String email = emails.getString(emails.getColumnIndex(ContactsContract.CommonDataKinds.Email.DATA));temp.emails.add(email);}emails.close();// 获取联系人头像temp.photo = getContactPhoto(context, contactId,R.drawable.ic_launcher);contacts.add(temp);}return contacts;}/*** 获取手机联系人头像** @param c* @param personId* @param defaultIco* @return*/private static Bitmap getContactPhoto(Context c, String personId,int defaultIco) {byte[] data = new byte[0];Uri u = Uri.parse("content://com.android.contacts/data");String where = "raw_contact_id = " + personId+ " AND mimetype ='vnd.android.cursor.item/photo'";Cursor cursor = c.getContentResolver().query(u, null, where, null, null);if (cursor.moveToFirst()) {data = cursor.getBlob(cursor.getColumnIndex("data15"));}cursor.close();if (data == null || data.length == 0) {return BitmapFactory.decodeResource(c.getResources(), defaultIco);} elsereturn BitmapFactory.decodeByteArray(data, 0, data.length);}
}
没有任何难点,只是做了一个小小的封装,使得以后不必再重复的去实现.
android获取手机联系人信息(电话,邮箱,姓名,头像)相关推荐
- 获取手机联系人信息(姓名 电话号码)
手机的联系人信息,存放的位置分为两种.一种存放在手机内存里面,一种是存放在sim卡里面. 他们的访问方式都相似,都是把电话号码和联系人姓名是分开存放在数据库中的,只是访问的uri不同. 本文主要讲的是 ...
- Android获取手机联系人匹配用户表并按字母A Z排序展示
1.前言 最近在做公司项目的时候遇到一个添加手机联系人的需求,主要有以下几个功能点: 读取联系人:读取用户手机上的通讯录里的联系人列表 好友排序:按照拼音顺序对好友进行排序,兼容英文数字符号等 字母索 ...
- Android获取手机基站信息并进行基站定位(基站定位原理)
一,首先普及一下手机基站信息中相关的专业词汇: 通过TelephonyManager 获取lac:mcc:mnc:cell-id(基站信息)的解释: MCC,Mobile Country Code, ...
- Android获取手机联系人的基本信息(如姓名、电话、邮箱、备注)
在做项目的过程中,需要获取我们手机通讯录联系人的基本信息,如姓名.电话.邮箱.备注.昵称.公司.职位.家庭电话等等信息,下面就是我总结的一些具体方法. 1:首先读取联系人需要添加读取权限,6.0以上需 ...
- Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询
首先先看一下效果图再说吧: 具体实现过程如下: 先在AndroidManifest.xml文件中添加读取联系人的权限: 1 <uses-permission android:name=" ...
- Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询
具体实现过程如下: 先在AndroidManifest.xml文件中添加读取联系人的权限: 1 <uses-permission android:name="android.permi ...
- Android 获取手机设备信息(厂商,型号等)
public class DeviceUtils {/*** 获取当前手机系统语言.** @return 返回当前系统语言.例如:当前设置的是"中文-中国",则返回"zh ...
- Android获取手机设备信息并区分真机与模拟器
有些时候我们不想App在模拟器上被别人使用,所以我们禁止在模拟器上使用App 判断是否为真机: 根据以下四图,我们可以对真机与模拟器来做一个简单区分: 如果Serial码为unkonwn或者andro ...
- Android获取手机联系人匹配用户表并按字母A-Z排序展示
1.前言 最近在做公司项目的时候遇到一个添加手机联系人的需求,主要有以下几个功能点: 读取联系人:读取用户手机上的通讯录里的联系人列表 好友排序:按照拼音顺序对好友进行排序,兼容英文数字符号等 字母索 ...
- Android 获取手机硬件信息
/*** 获取当前手机系统语言.** @return 返回当前系统语言.例如:当前设置的是"中文-中国",则返回"zh-CN"*/public static S ...
最新文章
- linux下多进程编程简介
- html坐标定位图解,HTML5地理定位实例
- [BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
- python legb_理解 Python 的 LEGB.
- maven ant_如何在Maven中运行Ant目标?
- 不足补0 java_Java Android 开发数字不足位数前面补0
- Ubuntu根目录下各文件的功能介绍
- html button跳转页面_Html
- Quirks模式与标准模式
- PLSQL - 递归子查询RSF打破CONNECT BY LOOP限制
- 计算机专利英语笔译,基于Trados2014的专利翻译实践报告-英语笔译专业论文.docx...
- Visio 的uml数据库表示方法中容器无法设置外键?
- nginx证书填写路径报错:SSL: error:0200107B:system library:fopen:Unknown error:fopen
- Statement接口的基本介绍和使用
- 风控基础——风控模型、规则、策略的区别
- 【产品】CNC工艺手板加工和模具区别详解
- 尚硅谷JS笔记-数组的剩余方法、函数的方法 、arguments 、Date、Math、包装类、字符串的相关方法、正则表达式、字符串和正则相关的方法的总结及归纳
- 【Proteus仿真】在AT24C04的连续地址中写入数据并循环读取
- java重载tostring_什么时候不希望在Java中实现toString()?
- 交叉编译 arm-poky-linux-gnueabi-gcc libmodbus库笔记