读取联系人:ContentResolver

本文介绍了一种通过内容提供者查询手机联系人数据库的方法,包括从raw_contacts表获取联系人ID,从data表获取联系人详细信息,并通过mimetypes表识别数据类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

     
raw_contacts : 这个表的作用是用来保存联系人的id  contact_id 用来保存联系人的id

data: 作用是保存联系人的数据的. data1里面存放的是数据  raw_contact_id 存的是联系人的id, mimetype_id


mimetypes: 保存数据的类型


需求: 利用内容提供者查询联系人数据库里面的内容了.
1.查询raw_contacts 表 获取所有的联系人的id
2.查询data表 获取联系人的数据的.
3.根据mimetypes数据类型确定这个数据代表的含义.



需求: 插入一条信息到系统的联系人.
1.在raw_contacts表里面生成一条新的联系人的id
2.根据id在 data表里面插入对应的数据.



号簿管家





 /**
       * 读取联系人的方法
       * @param context
       * @return
       */
      public   List<ContactsBean>  getContactsInfo(Context context){
            
      ContactsBean contactsBean= new ContactsBean();
        List<ContactsBean> contactsList=new ArrayList<ContactsBean>();
            
        //得到内容解析者
        ContentResolver resolver = context.getContentResolver();  
        //定义uri:查询raw_contacts表中所有联系人ID
        Uri uri = Uri.parse("content://com.android.contacts/raw_contacts");
        Uri dataUri = Uri. parse("content://com.android.contacts/data");
       
        //1.内容解析器解析表中数据得到结果集
        Cursor cursor = resolver.query(uri, new String[]{ "contact_id"}, null, null, null);
       
        while(cursor.moveToNext()){
              String id=cursor.getString(0);    //得到结果集
             
              if(id!= null){
             
              //2.根据联系人的id在data表中查询联系人的数据
              Cursor Datacursor = resolver.query(dataUri, null, "raw_contact_id=?",new String[]{id} , null);
              while(Datacursor.moveToNext()){
                    String date1=Datacursor.getString(Datacursor.getColumnIndex("data1" ));
                    String mimetype=Datacursor.getString(Datacursor.getColumnIndex("mimetype_id" ));
                  
                   
                    if( "vnd.android.cursor.item/email_v2".equals(mimetype)){
                          contactsBean.setEmail(date1);
                    }
                    else if( "vnd.android.cursor.item/name".equals(mimetype)){
                         
                          contactsBean.setName(date1);
                    }
                    else if( "vnd.android.cursor.item/phone_v2".equals(mimetype)){
                          contactsBean.setPhone(date1);
                    }
                   
                   
                   
              }
              Datacursor.close();
             
              contactsList.add(contactsBean);
              contactsBean= null;
             
             
              }
         }
       
        cursor.close();
            
             return contactsList;
            
  1.       }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值