Android通讯录查询篇--ContactsContract.Data 二

上次说Data.MIMETYPE这个玩意很重要,官方的文档中描述了一大段的话。里面比较重要的几点是:

      1、在Data中有一大段的公共数据段,DATA1~DATA15。这名子咋一看,真搞笑,哪有这样为数据命名的,神也记不住是干什么的的啊!

      2、上面说的那些公共数据段所存的数据类型是由这个MIMETYPE决定的。

 

      虽说这两个重要,不过刚看到这里,我还是懵了,这到底是个什么玩意嘛。(当然这很有可能是因为英文水平差,没看完全懂的原因。)

再看看官方文档,上面有个例子说,如果MIMETYPE的值是Phone.CONTENT_ITEM_TYPE,则DATA1就是电话号码,如果MIMETYPE的值是Email.CONTENT_ITEM_TYPE则DATA1的值就是E-mail地址。这样一说,又似乎明白了点。(还是举实例子来的实在!)

  在上次说的那个官方代码里面不就有将MIMETYPE赋值为Phone.CONTENT_ITEM_TYPE的么。所以那个查询就用来查电话了。

  在MIMETYPE的描述里面说,它可以被赋许多值:

  StructuredName.CONTENT_ITEM_TYPE

  Phone.CONTENT_ITEM_TYPE

  Email.CONTENT_ITEM_TYPE

  Photo.CONTENT_ITEM_TYPE

  Organization.CONTENT_ITEM_TYPE

  Im.CONTENT_ITEM_TYPE

  Nickname.CONTENT_ITEM_TYPE

  Note.CONTENT_ITEM_TYPE

  StructuredPostal.CONTENT_ITEM_TYPE

  GroupMembership.CONTENT_ITEM_TYPE

  Website.CONTENT_ITEM_TYPE

  Event.CONTENT_ITEM_TYPE

  Relation.CONTENT_ITEM_TYPE

 

  现在我们知道的有用Phone那个可以查电话,那用哪个查姓名呢?

  再之后看文档时候可以明白把StructuredName.CONTENT_ITEM_TYPE给MINETYPE就行了。(但刚开始的时候可能是因为看英文,怎么都没把它们好的联系起来。)

  所将官方的代码改成这样的话就可以查询姓名了。

 

1 Cursor c = getContentResolver().query(Data.CONTENT_URI,
2         new String[]{Data._ID,StructuredName.DISPLAY_NAME, },
3         Data.MIMETYPE + "='" + StructuredName.CONTENT_ITEM_TYPE + "'",
4           nullnull);

 

  其中游标C的结果的第二个字段(StructuredName.DISPLAY_NAME)就是姓名,准确的说应该是“显示姓名”(因为姓名也以再细分为姓和名)。

      如果还没有理解的话,也不要紧,之后我会把它讲的形像一点。

  通讯录虽然不是一个什么难的东西,不过我想还是理顺一点好,免得过些天后又晕了。。

posted @ 2011-01-05 10:57  张兴业  阅读(174)  评论(0编辑  收藏  举报