查询联系人信息

看三张表:contacts , date , mimeType


其中,contacts 表查_id 为联系人id


date表 查 date1, (联系人的详细信息) date15,(联系人头像信息) mimetype_id


mimeType表  根据date表中mimetype_id 找到相应的联系人信息

具体代码实现示例:


private List<Contact> contacts;
    /**
     * 记得读数据的权限设置
     */
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        contacts= new ArrayList<Contact>();
        
        ContentResolver crContacts=this.getContentResolver();
        //cursorContacts:该查询所有联系人的id
        Cursor cursorContacts = crContacts.query(Contacts.CONTENT_URI,
                new String[]{Contacts._ID},null,null,null);
        while(cursorContacts.moveToNext()){
            Contact contact = new Contact();
            contact.set_id(cursorContacts.getInt(0));
            ContentResolver crData = getContentResolver();
            //cursorData:这指针查询Data表中数据
            Cursor cursorData = crData.query(Data.CONTENT_URI,
                new String[]{Data.MIMETYPE,Data.DATA1,Data.DATA15},
                Data.RAW_CONTACT_ID+"==?",
                new String[]{String.valueOf(contact.get_id())} ,null);
            //每一次内层循环,获取一个联系人的详细信息
            while(cursorData.moveToNext()){
                String mimeType=cursorData.getString(0);
                if(mimeType.equals("vnd.android.cursor.item/phone_v2")){
                    contact.setPhone(cursorData.getString(1));
                }else if(mimeType.equals("vnd.android.cursor.item/name")){
                    contact.setName(cursorData.getString(1));
                }else if(mimeType.equals("vnd.android.cursor.item/postal-address_v2")){
                    contact.setCompany(cursorData.getString(1));
                }else if(mimeType.equals("vnd.android.cursor.item/email_v2")){
                    contact.setEmail(cursorData.getString(1));
                }else if(mimeType.equals("vnd.android.cursor.item/organization")){
                    contact.setAddress(cursorData.getString(1));
                }else if(mimeType.equals("vnd.android.cursor.item/photo")){
                    byte[] data = cursorData.getBlob(2);
                    Bitmap bitmap= BitmapFactory.decodeByteArray(data, 0, data.length);
                    contact.setPhoto(bitmap);
                }
            }
                //内层循环结束,释放资源
                cursorData.close();
                //将每次获取的联系人详细信息存储到list集合中
                contacts.add(contact);
                Log.i("TAG",contacts.toString());
        }
        cursorContacts.close();
    }

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值