从Android 2.0 SDK开始有关联系人provider的类变成了ContactsContract,虽然老的android.provider.Contacts能用,但是在SDK中标记为为deprecated将被放弃不推荐的方法,而从Android 2.0及API Level为5开始新增了android.provider.ContactsContract来代替原来的方法。
ContactsContract的子类ContactsContract.Contacts是一张表,代表了所有联系人的统计信息。比如联系人ID(—ID),查询键(LOOKUP_KEY),联系人的姓名(DISPLAY_NAME_PRIMARY),头像的id([url=]PHOTO_ID[/url])以及群组的id等等。

我们可以通过以下的方法取得所有联系人的表的Cursor对象:

1)ContentResolver contentResolver=getContentResolver();

2)Cursor cursor=contentResolver.query(ContactsContract.Contacts.CONTENT_URI, null, null, null, null);//根据URI对象ContactsContract.Contacts.CONTENT_URI查询所有联系人;

从Cursor对象里我们关键是要取得联系人的_id。通过它,再通过ContactsContract.CommonDataKinds的各个子类查询该_id联系人的电话(ContactsContract.CommonDataKinds.Phone),email(ContactsContract.CommonDataKinds.Email) 等等。

以取得该联系人所有电话为例:

1)int idFieldIndex=cursor.getColumnIndex(ContactsContract.Contacts._ID);
int id=cursor.getInt(idFieldIndex);//根据列名取得该联系人的id;

2)Cursor phonecursor=contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, ContactsContract.CommonDataKinds.Phone.CONTACT_ID+"=?", new String[]{Integer.toString(id)}, null);
ContactsContract.CommonDataKinds.Phone中根据查询相应id联系人的所有电话;

类似地可以ContactsContract.CommonDataKinds的不同的子类查询不同的内容。android文档告诉我们推荐使用 ContactsContract.Contacts.LOOKUP_KEY代替ContactsContract.Contacts._ID。

更多相关文章

  1. android中自定义WebView显示网页或本地html文件
  2. Android(安卓)版本兼容 — Android(安卓)4.4 后根据系统 Uri 查
  3. Android(java)学习笔记75:匿名内部类的方式实现多线程程序
  4. Android加载通话记录流程分析
  5. Android学习笔记(21):ImageView及其子类
  6. android中google“定位查询”编辑
  7. 一步一步学习Android(安卓)TV/盒子开发(三)
  8. android之电话号码查询
  9. 笔记-系统源码常用的Content Provider

随机推荐

  1. android 五大布局经典演绎
  2. Android――动画专题研究
  3. [置顶] Android常用命令
  4. 如何设置Android命令行环境变量
  5. android uiautomator自动化测试
  6. Android中的多击事件
  7. 【转】android:minSdkVersion 相关知识
  8. 自定义ListView中的分割线(转)
  9. Android开发学习之Animation之Android帧
  10. 在iPhone 和 Android设备上,HTML5的关于键