获取手机中联系人的数据

看到这个标题:首先必须想到
1,找到手机系统为我们提供的联系人数据库,其地址为:
/data/data/com.android.providers.contact/cache/database/contacts2.db
2,查询数据库中的表:data(得到数据),mimetypes(获取类型),raw_contacts(获取ID),和视图view(关系)
3,具体实现代码如下:写个公共静态的方法

public class ContactUtils{
    public static List<ContactInfo> getContacts(Context context){
    //准备一个集合用来转载查询的联系人数据
    List<ContactInfo> lists = new ArrayList<>();

    //获得一个内容解析者,(查询别人的数据库)
    ContentResolver resolver = context.getContentReslver();
    //准备uri(查询的是那张表,其组成为:content://主机名/表名)查询到具体的contact_id
    Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
    //在准备一个Uri根据具体的contact_id,查询具体的联系人信息
    Uri datauri = Uri.parse("content://com.android.contacts/data");

    //开始查询
    Cursor cursor = resolver.query(uri,new String[]{"contact_id"},null,null,null);
    while(cursor .moveToNext()){
    //说明有数据
    String contact_id = cursor.getString(0);
    if(!TextUtils.isEmpty(contact_id)){
    ContactInfo info = new ContactInfo();
    //开始根据新的条件查询具体的数据
    Cursor dataCursor = resolver.query(datauri, new String[]{"mimetype","data1"},"raw_contact_id = ?",new String[]{contact_id},null);
    while(dataCursor.moveToNext()){
     String mimetype = dataCursor.getString(0);
                    if("vnd.android.cursor.item/phone_v2".equals(mimetype)) {
                        //说明是一个电话号码
                        info.phone= dataCursor.getString(1);
                    }else if("vnd.android.cursor.item/name".equals(mimetype)) {
                        //说明这个data1是名字
                        info.name=dataCursor.getString(1);
                    }
                }
                lists.add(info);
        }
    }
    return  lists;
   }
     public static  class ContactInfo{
      public   String name; //联系人名字
      public  String phone;//联系人的号码
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值