文章转载只能用于非商业性质,且不能带有虚拟货币、积分、注册等附加条件。转载须注明出处http://blog.csdn.net/flowingflying/以及作者@恺风Wei。
profile的数据库
Personal Profile contact和其他的contact一样,但只有为一个,由单独的数据块profile.db进行存放,这个数据库和contact2.db的结构是一样的。由于只有一个整合联系人,所以在整合方面的处理更为简单,所有的raw contacts都会整合到这唯一的联系人(me)中。
相关的URI和普通联系人相似,用Profile替代Contact。例如ContactsContract.Profile.CONTENT_URI、ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI和ContactsContract.RawContactsEntity.PROFILE_CONTENT_URI。但是Data表,和contact数据使用同一个URI,即Data.CONTENT_URI。Content Provider同时支持对profile和contact。
对于对personal profile数据的读写,需要获得相应的权限。
<uses-permission android:name="android.permission.READ_PROFILE"/>
<uses-permission android:name="android.permission.WRITE_PROFILE"/>
读profile的raw contact
读取profile的raw contacts和读取contact中的raw contacts没有区别,相关代码片段如下,更多的代码可参见Pro Android学习笔记(一六二):联系人API(5):读Raw Contacts。
private void showAllRawContactsInPersonalProfile(){
Cursor c = null;
try{
c = getACurosor(ContactsContract.Profile.CONTENT_RAW_CONTACTS_URI.toString(), null);
showEntries(c);
}finally{
if(c != null)
c.close();
}
}
private void showEntries(Cursor c ){
int num = 0;
for(c.moveToFirst(); !c.isAfterLast() ; num ++,c.moveToNext()){
RawContactInfo rawOne = new RawContactInfo();
rawOne.fillinFrom(c);
showInfo("【" + num + "】" + rawOne.toString());
}
}
读profile中raw contact的具体信息
和contact一样,RawContactEntity是结合raw contact和data提供的view,读取方式也一样,下面是代码片段,更多的代码可参见Pro Android学习笔记(一六三):联系人API(6):联系人详细信息。
private void showRawContactsInPersonalProfileData(){
Cursor c = null;
try{
c = getACurosor(ContactsContract.RawContactsEntity.PROFILE_CONTENT_URI.toString(), null);
showEntitiesData(c);
}finally{
if(c != null)
c.close();
}
}
private void showEntitiesData(Cursor c){
int num = 0;
for(c.moveToFirst(); !c.isAfterLast() ; num ++,c.moveToNext()){
ContactInfo one = new ContactInfo();
one.fillinFrom(c);
showInfo("【" + num + "】" + one.toString());
}
}
下面是小例子的截屏
小例子下载。
相关链接: 我的Android开发相关文章