Android Contacts2.db读取mimetypes列(不在数据表中记录)

时间:2018-08-14 08:38:43

标签: android android-contacts

Android联系人database的一列称为mimetypes。实例化database时,默认情况下会创建该值。

我发现了一个试图解决完全相同的问题的问题,但是即使有一个公认的答案,也无法解决该问题。(在下面的链接上)

on StackOverflow

"1" "vnd.android.cursor.item/email_v2"
"2" "vnd.android.cursor.item/im"
"3" "vnd.android.cursor.item/nickname"
"4" "vnd.android.cursor.item/organization"
"5" "vnd.android.cursor.item/phone_v2"
"6" "vnd.android.cursor.item/sip_address"
"7" "vnd.android.cursor.item/name"
"8" "vnd.android.cursor.item/postal-address_v2"
"9" "vnd.android.cursor.item/identity"
"10"    "vnd.android.cursor.item/photo"
"11"    "vnd.android.cursor.item/group_membership"
"12"    "vnd.android.cursor.item/note"
"13"    "vnd.android.cursor.item/contact_event"
"14"    "vnd.android.cursor.item/website"
"15"    "vnd.android.cursor.item/relation"
"16"    "vnd.com.google.cursor.item/contact_misc"

现在,我想阅读此column槽式上下文提供程序,并以mimetype的形式获取每个integer的ID,即我对字符串不感兴趣,但对ID本身不感兴趣。我还没有找到任何提供这种可能性的Context提供程序。有没有办法做到这一点。理想情况下,我希望收到的是代表该列的HashMap<Integer, String>

请注意,我知道如何在mimetype中获取record的{​​{1}},即

data column

这不是我想要的。我正在寻找String mimetype = cursorData.getString(cursorData.getColumnIndex(ContactsContract.Data.MIMETYPE )); 列。

1 个答案:

答案 0 :(得分:0)

要总结评论中的讨论,没有API可以读取所有模拟类型的列表,因为这是Contacts DB使用的内部表,并且不是外部API要求的一部分。

如果需要为每个模仿类型设置一些恒定的ID,则开发人员可以创建可通过API获得的所有已知模仿类型的静态列表(可以查询),并为每个模仿类型设置自己的ID。 由于mimetypes可以由应用程序开发人员免费添加,因此该列表仅支持Android提供的mimetypes,而不支持自定义mimtypes。