关于Contacts的那点事儿

本文通过实例代码展示了如何查询和解析Android系统中Contacts应用的数据结构。通过对Contacts.CONTENT_URI的查询,获取联系人的基本信息,并进一步查询联系人数据表,获取包括电话号码、电子邮件地址等在内的详细信息。

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

很久没有更新博客了。

一直没整明白,Android中的Contacts是如何组织数据的,于是今天折腾了一下Contacts的结构。


留底以备以后参考。

private String testOne() throws Exception { final Cursor people = getContentResolver().query(Contacts.CONTENT_URI, null, null, null, null); StringBuilder sb = new StringBuilder(); while(people.moveToNext()) { long id = people.getLong(people.getColumnIndex(Contacts._ID)); String name = people.getString(people.getColumnIndex(PhoneLookup.DISPLAY_NAME)); if(id==1) { sb.append("---id is "+id+",name is "+name+"\n"); //String IsPhone = people.getString(people.getColumnIndex(Contacts.HAS_PHONE_NUMBER)); //if( (Integer.parseInt(IsPhone) > 0) ){} Cursor c = null; // Cursor c = getContentResolver().query(CommonDataKinds.Phone.CONTENT_URI, // null,CommonDataKinds.Phone.CONTACT_ID+"="+id,null,null); //while(c.moveToNext()){ // long i = c.getLong(c.getColumnIndex(Contacts._ID)); // String num=c.getString(c.getColumnIndex(CommonDataKinds.Phone.NUMBER)); // sb.append("phone=id:"+i+", n:"+num+"\n"); //} //c.close(); c=getContentResolver().query(Data.CONTENT_URI, null, Data.CONTACT_ID+"="+id, null, null); while(c.moveToNext()){ long j=c.getLong(c.getColumnIndex(Contacts._ID)); String typ=c.getString(c.getColumnIndex(Data.MIMETYPE)); String str=""; if(typ.equals(CommonDataKinds.Im.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Im.PROTOCOL))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Im.DATA)); } else if(typ.equals(CommonDataKinds.Email.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Email.TYPE))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Email.DATA)); } else if(typ.equals(CommonDataKinds.Note.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Email.DATA)); } else if(typ.equals(CommonDataKinds.Phone.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Phone.TYPE))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Phone.DATA)); } else if(typ.equals(CommonDataKinds.Photo.CONTENT_ITEM_TYPE)){ byte[] buf = c.getBlob(c.getColumnIndex(CommonDataKinds.Photo.PHOTO)); str="len is "+buf.length; } else if(typ.equals(CommonDataKinds.Nickname.CONTENT_ITEM_TYPE)){ str=c.getString(c.getColumnIndex(CommonDataKinds.Nickname.TYPE))+","; str+=c.getString(c.getColumnIndex(CommonDataKinds.Nickname.DATA)); } sb.append("data=id"+j+", t:"+typ+"\n, n:"+str+"\n"); } c.close(); } } people.close(); return sb.toString(); }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值