读取联系人:ContentResolver

     
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.       }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值