0
点赞
收藏
分享

微信扫一扫

Pro Android学习笔记(一六六):联系人API(9):Personal Profile


作者@恺风Wei。

profile的数据库

Personal Profile contact和其他的contact一样,但只有为一个,由单独的数据块profile.db进行存放,这个数据库和contact2.db的结构是一样的。由于只有一个整合联系人,所以在整合方面的处理更为简单,所有的raw contacts都会整合到这唯一的联系人(me)中。

Pro Android学习笔记(一六六):联系人API(9):Personal Profile_Android

相关的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());
     }        
 }

下面是小例子的截屏

Pro Android学习笔记(一六六):联系人API(9):Personal Profile_android_02

小例子下载。


举报

相关推荐

0 条评论