1.ContactsContract.Data
由于联系人的信息都是按类别存储到了这个Data表中,所以我们要查找联系人的信息只需要查这个表。Data类中的Data.CONTACT_ID与Data.RAW_CONTACT_ID分别表示该表项对应的联系人在Contact与RawContract表中的ID,我们只需要知道某一个联系人的contactId或rawContractId,并根据其查找的数据的类型就可以查到相应类型的信息。
表中一行可以存储任何个人数据,例如手机号或者邮箱地址。并且表中的所有数据皆为开放的。表中有一些常规的预定字段,当然任何应用可以根据自身需求去定义自己数据字段。
2.ContactsContract.RawContacts
这个表表示用户单个账号下面的联系人,比如用户的Gmail邮箱内的联系人。
3.ContactsContract.Contacts
此表存放着描述同一个人的一个或者多个RowContact(账号)的聚合数据。当单个账号数据修改后,此表会根据需要更新对应的聚合联系人。
4.ContactsContract.CommonDataKinds
在Data表中,Data的data1~data15字段用于存储各类型的数据信息,那么这15个字段分别表示什么信息呢?
Data表中有一个mimetype_id字段,通过这个字段关联mimetypes表表示该行代表的信息类型,因为Data表中的每一行可以表示如Phone或Address等不同类型的信息,所以对于不同类型的信息,data1~data15这15列表示不同的含义,如果要靠记忆记住这15列对于特定的类型分别表示什么意义自然不行,于是Google就预定义了一些类,每一个类对应一些预先定义好的数据类型,在每个类中定义了一些语义地、方便记忆的常量,用来对应这15个字段。这样,比如当我们要查找Email时,只需要通过ContactsContract.CommonDataKinds.Email引用,不需要知道它是存储在Data表中的data1列中。
到这里,我们知道CommonDataKinds类是为了便于查找数据而进行封装的类。