android developer tiny share-20170628
今天继续讲android的Contact ContentProvider,讲CommonDataKinds类,讲类型专用列名称和通用列名称的映射关系。
以下是android developer官方的讲解:
类型专用列名称
为便于处理特定类型行的列,联系人提供程序还提供了 ContactsContract.CommonDataKinds 子类中定义的类型专用列名称常量。 这些常量只是为同一列名称提供不同的常量名称,这有助于您访问特定类型行中的数据。
例如,ContactsContract.CommonDataKinds.Email 类为 ContactsContract.Data 行定义类型专用列名称常量,该行的 MIME 类型为 Email.CONTENT_ITEM_TYPE。 该类包含电子邮件地址列的 ADDRESS 常量。 ADDRESS 的实际值为“data1”,这与列的通用名称相同。
注意:请勿使用具有提供程序某个预定义 MIME 类型的行向 ContactsContract.Data 表中添加您自己的自定义数据。 否则您可能会丢失数据,或导致提供程序发生故障。 例如,如果某一行具有 MIME 类型 Email.CONTENT_ITEM_TYPE,并且 DATA1 列包含的是用户名而不是电子邮件地址,您就不应添加该行。如果您为该行使用自定义的 MIME 类型,则可自由定义您的自定义类型专用的列名称,并随心所欲地使用这些列。
图 2 显示的是描述性列和数据列在 ContactsContract.Data 行中的显示情况,以及类型专用列名称“覆盖”通用列名称的情况
图 2. 类型专用列名称和通用列名称。
类型专用列名称类
表 2 列出了最常用的类型专用列名称类:
表 2. 类型专用列名称类
映射类 | 数据类型 | 说明 |
---|---|---|
ContactsContract.CommonDataKinds.StructuredName | 与该数据行关联的原始联系人的姓名数据。 | 一位原始联系人只有其中一行。 |
ContactsContract.CommonDataKinds.Photo | 与该数据行关联的原始联系人的主要照片。 | 一位原始联系人只有其中一行。 |
ContactsContract.CommonDataKinds.Email | 与该数据行关联的原始联系人的电子邮件地址。 | 一位原始联系人可有多个电子邮件地址。 |
ContactsContract.CommonDataKinds.StructuredPostal | 与该数据行关联的原始联系人的邮政地址。 | 一位原始联系人可有多个邮政地址。 |
ContactsContract.CommonDataKinds.GroupMembership | 将原始联系人链接到联系人提供程序内其中一组的标识符。 | 组是帐户类型和帐户名称的一项可选功能。 联系人组部分对其做了更详尽的描述。 |