用途:获取联系人名称,电话,头像
功能:
1.getContactInfo:获取联系人名称,电话,头像唯一标识
2.getImg:根据唯一标识去获取Contract表里的图片/头像资源
小提:需要权限,需与Javabean结合使用
//获取联系人名称,电话,头像
public class GetContactInfoUtils {//获取联系人名称,电话,头像唯一标识public static List<ContactInfo>getContactInfo(Context context){List<ContactInfo> list=new ArrayList<>();//创建获取联系人的内容解析者ContentResolver resolver = context.getContentResolver();//ContactsContract.CommonDataKinds:获取到data表 , Phone.CONTENT_URI:获取联系人数据库的URIUri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//定义我们所需要查询的条件String[] projection=new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,//获取联系人名称ContactsContract.CommonDataKinds.Phone.NUMBER,//获取联系人号码ContactsContract.CommonDataKinds.Phone.CONTACT_ID//获取联系人的唯一标识};//获取Cursor cursor=resolver.query(uri,projection,null,null,null);Log.e("YFF", "getContactInfo: ");//循环while(cursor.moveToNext()){String name=cursor.getString(0);Log.e("YFF", "getContactInfo: "+name);String unmber=cursor.getString(1);int id=cursor.getInt(2);//为了方便管理,将获取的信息存放到实体类中(JavaBean)ContactInfo contactInfo=new ContactInfo();contactInfo.setName(name);contactInfo.setUnmber(unmber);contactInfo.setId(id);//添加到容器list.add(contactInfo); }return list;}//根据唯一标识去获取Contract表里的图片/头像资源public static Bitmap getImg(Context context,int i){ContentResolver contentResolver=context.getContentResolver();//定义URl,但是不能再向上面拿名称那样去取得字段Uri uri=Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI,i+"");//ContactsContract.Contacts:相当于联系人APP的数据库中Contact表,通过openContactPhotoInputStream拿到流对象InputStream is=ContactsContract.Contacts.openContactPhotoInputStream(contentResolver,uri);//将拿到的资源的转换成我们所需要的图片Bitmap biemap= BitmapFactory.decodeStream(is);//关闭流if (is!=null){try {is.close();} catch (IOException e) {e.printStackTrace();}}return biemap;}
}
使用ContentResolver(内容解析者)获取联系人名称,电话,头像