手机联系人信息获取(头像,电话,姓名)

需求 : 获取本地通讯录中的联系人数据
实现 : 通过系统定义好的常量去获取联系人数据
代码 :

public class ContactsDAO {
    public static ArrayList<NumBean> getAllContacts(Context context) {
        ArrayList<NumBean> datas =new ArrayList<>();
        ContentResolver contentResolver = context.getContentResolver();
        Uri uri = ContactsContract.CommonDataKinds.Phone.CONTENT_URI;
        String[] projection = new String[]{
                ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME,
                ContactsContract.CommonDataKinds.Phone.NUMBER,
                ContactsContract.CommonDataKinds.Phone.CONTACT_ID};//返回的列名
        String selection = null;   //查询的条件
        String[] selectionArgs = null;//查询条件的参数
        String sortOrder = null;   //排序
        Cursor cursor = contentResolver.query(uri, projection, selection, selectionArgs, sortOrder);
        if(cursor!=null){
            while (cursor.moveToNext()){
                String name = cursor.getString(0);
                String number = cursor.getString(1);
                String id = cursor.getString(2);

                NumBean bean =new NumBean();
                bean.name=name;
                bean.num=number;
                bean.iconId=id;
                datas.add(bean);
            }
            //关闭
            cursor.close();
        }
        return datas;
    }
    //获取联系人头像的bitmap   content://com.android.contacts
    public static Bitmap getBitmap(Context context, String id){
        ContentResolver cr=context.getContentResolver();
        Uri uri = Uri.withAppendedPath(ContactsContract.Contacts.CONTENT_URI,id);
        InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(cr, uri);
        return BitmapFactory.decodeStream(is);
    }

}

联系人数据库地址: data/data/com.android.providers.contacts/databases/contacts2.db

URI简介

联系人电话Uri: content://com.android.contacts/data/phones
联系人Email Uri: content://com.android.contacts/data/emails
Android官方有上述将上述URI进行封装,我们可以使用API以更简单的方式获取这些URI

联系人电话Uri: ContactsContract.CommonDataKinds.Phone.CONTENT_URI
联系人名字列名常量:ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME
联系人号码列名常量:ContactsContract.CommonDataKinds.Phone.NUMBER
联系人ID列名常量: ContactsContract.CommonDataKinds.Phone.CONTACT_ID
读取联系人需要添加权限


写权限

需求 : 获取联系人的图片
实现 : 通过 ContactsContract.Contacts.openContactPhotoInputStream()方法获取文件流, 然后通过BitmapFactory获取对应的Bitmap
代码 :

public static Bitmap getPhoto(Context context, String id) {
    ContentResolver cr = context.getContentResolver();
    Uri contactUri = Uri.withAppendedPath(Contacts.CONTENT_URI, id);
    InputStream is = ContactsContract.Contacts.openContactPhotoInputStream(cr, contactUri);
    return BitmapFactory.decodeStream(is);
}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值