首先应该知道联系人的信息都存放在data表中,其中主要的字段 有
_id:每个记录都有一个这样的id
minetype_id:数据类型
raw_contact_id:联系人的id-------------》这个信息有个表维护,自动增长
data1:联系人的详细信息
data2~n:对data1的分解描述
data2:主要介绍信息的种类
在需要查找Contact中的详细信息时,需要以下步骤
1.我们首先要得到Contact的Id(比如:具体哪个人的信息)
2.信息的数据类型:minitype_id(比如:我要的是哪个电话的信息,或者是地址的信息)
3.信息的种类:data2(比如:电话可分为:home和Work,other等)
如下代码:
第一种情况:
resolver.query(Data.CONTENT_URI, //获得uri地址
null,//
StructuredName.CONTACT_ID + " = " + contactId //获得联系人的具体id
+ " and " + Data.MIMETYPE + " = '" + StructuredName.CONTENT_ITEM_TYPE+"'"//获得数据类型信息
, null, null)
使用Data.CONTENT_URI:能获得所有的信息
第二种情况:
esolver.query(Email.CONTENT_URI, //获得uri
null,
Email.CONTACT_ID + " = " + contactId//获得联系人的具体id
+ " and " + Email.TYPE+ "=" + emailType//获得邮箱的种类(如:主要的邮箱,工作的邮箱)
, null, null);
使用以上类似的这种URI能获得一些具体的信息,可以免去获得信息的数据类型这块(minetype_id)的判断;
以下是用于自动增长Contact 的 Id
用于联系人的插入操作时需要的rawContactId
ContentValues values = new ContentValues();
Uri rawContactUri = resolver.insert(RawContacts.CONTENT_URI, values);
long rawContactId = ContentUris.parseId(rawContactUri);