在我们开发应用程序时,通常都会用到获取手机联系人信息这一十分常用的功能,最近项目里也要实现此功能,想到以后的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获取手机联系人信息(电话,邮箱,姓名,头像)相关推荐

  1. 获取手机联系人信息(姓名 电话号码)

    手机的联系人信息,存放的位置分为两种.一种存放在手机内存里面,一种是存放在sim卡里面. 他们的访问方式都相似,都是把电话号码和联系人姓名是分开存放在数据库中的,只是访问的uri不同. 本文主要讲的是 ...

  2. Android获取手机联系人匹配用户表并按字母A Z排序展示

    1.前言 最近在做公司项目的时候遇到一个添加手机联系人的需求,主要有以下几个功能点: 读取联系人:读取用户手机上的通讯录里的联系人列表 好友排序:按照拼音顺序对好友进行排序,兼容英文数字符号等 字母索 ...

  3. Android获取手机基站信息并进行基站定位(基站定位原理)

    一,首先普及一下手机基站信息中相关的专业词汇: 通过TelephonyManager 获取lac:mcc:mnc:cell-id(基站信息)的解释:  MCC,Mobile Country Code, ...

  4. Android获取手机联系人的基本信息(如姓名、电话、邮箱、备注)

    在做项目的过程中,需要获取我们手机通讯录联系人的基本信息,如姓名.电话.邮箱.备注.昵称.公司.职位.家庭电话等等信息,下面就是我总结的一些具体方法. 1:首先读取联系人需要添加读取权限,6.0以上需 ...

  5. Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询

    首先先看一下效果图再说吧: 具体实现过程如下: 先在AndroidManifest.xml文件中添加读取联系人的权限: 1 <uses-permission android:name=" ...

  6. Android 获取手机通讯录信息 — 头像、姓名和A-Z的快速查询

    具体实现过程如下: 先在AndroidManifest.xml文件中添加读取联系人的权限: 1 <uses-permission android:name="android.permi ...

  7. Android 获取手机设备信息(厂商,型号等)

    public class DeviceUtils {/*** 获取当前手机系统语言.** @return 返回当前系统语言.例如:当前设置的是"中文-中国",则返回"zh ...

  8. Android获取手机设备信息并区分真机与模拟器

    有些时候我们不想App在模拟器上被别人使用,所以我们禁止在模拟器上使用App 判断是否为真机: 根据以下四图,我们可以对真机与模拟器来做一个简单区分: 如果Serial码为unkonwn或者andro ...

  9. Android获取手机联系人匹配用户表并按字母A-Z排序展示

    1.前言 最近在做公司项目的时候遇到一个添加手机联系人的需求,主要有以下几个功能点: 读取联系人:读取用户手机上的通讯录里的联系人列表 好友排序:按照拼音顺序对好友进行排序,兼容英文数字符号等 字母索 ...

  10. Android 获取手机硬件信息

    /*** 获取当前手机系统语言.** @return 返回当前系统语言.例如:当前设置的是"中文-中国",则返回"zh-CN"*/public static S ...

最新文章

  1. linux下多进程编程简介
  2. html坐标定位图解,HTML5地理定位实例
  3. [BZOJ1643][Usaco2007 Oct]Bessie's Secret Pasture 贝茜的秘密草坪
  4. python legb_理解 Python 的 LEGB.
  5. maven ant_如何在Maven中运行Ant目标?
  6. 不足补0 java_Java Android 开发数字不足位数前面补0
  7. Ubuntu根目录下各文件的功能介绍
  8. html button跳转页面_Html
  9. Quirks模式与标准模式
  10. PLSQL - 递归子查询RSF打破CONNECT BY LOOP限制
  11. 计算机专利英语笔译,基于Trados2014的专利翻译实践报告-英语笔译专业论文.docx...
  12. Visio 的uml数据库表示方法中容器无法设置外键?
  13. nginx证书填写路径报错:SSL: error:0200107B:system library:fopen:Unknown error:fopen
  14. Statement接口的基本介绍和使用
  15. 风控基础——风控模型、规则、策略的区别
  16. 【产品】CNC工艺手板加工和模具区别详解
  17. 尚硅谷JS笔记-数组的剩余方法、函数的方法 、arguments 、Date、Math、包装类、字符串的相关方法、正则表达式、字符串和正则相关的方法的总结及归纳
  18. 【Proteus仿真】在AT24C04的连续地址中写入数据并循环读取
  19. java重载tostring_什么时候不希望在Java中实现toString()?
  20. 交叉编译 arm-poky-linux-gnueabi-gcc libmodbus库笔记

热门文章

  1. CSS:输入框input光标距离输入框左边间距设置
  2. SecureRandom生成随机数慢(阻塞)问题解决记录
  3. jquery的函数介绍和使用
  4. 微信公号“架构师之路”学习笔记(三)-MQ消息可达性_幂等性_延时性架构设计(应用场景、可靠投递、流量冲击)
  5. Web开发——问题:js/css文件修改提交后,没有效果
  6. xUtils3 注解模块
  7. BZOJ4141 THUSC2013 魔塔 贪心
  8. DemoKit编译过程错误
  9. 如果需要一个图形学算法
  10. 自编基于jQuery实现分页插件