对系统联系人操作时用到的两个类
ContactContract类
是介于contact的contentProvider和我们的应用程序中的一个类。它为我们提供了各种方法和常量来对系统的联系人数据库进行操,其中包括了对url的定义和对列名的定义。例如对data表进行查询:
Cursor cursor = contentResolver.query(ContactContract.Data.ContentUri,null,null,null,null);
//第一个参数是某一张表的uri,通过ContactContract.表名.ContentUri
CommomDataKinds类
是ContactContract类的内部类,data表中的一些列的类型都存在这里。data表中存储了email,phone,im,nickname,photo等的信息,我们可以通过CommomDataKinds类对这些数据进行操作。
Data表
data表是一个泛型表,里面可以存储任何联系人的信息,在data表中的每一行存储一个信息(例如一个电话号码,一个邮箱),具体存储的类型由该行的MIMETYPE决定。例如,该行的
MIMETYPE的值是Phone.CONTENT_ITEM_TYPE,那么这行的data1列存储的就是一个电话号码(为此专门定义了一个表mimetypes,用来存储含义。我们可以查询该表从而明白data中的每一行存储的是什么数据)。
sqlite> select * from mimetypes;
1|vnd.android.cursor.item/email_v2
2|vnd.android.cursor.item/im
3|vnd.android.cursor.item/postal-address_v2
4|vnd.android.cursor.item/photo
5|vnd.android.cursor.item/phone_v2
6|vnd.android.cursor.item/name
7|vnd.android.cursor.item/organization
8|vnd.android.cursor.item/nickname
9|vnd.android.cursor.item/group_membership
这代表了data数据表中可以存储的9类数据,