[android研究联系人之二]联系人Email/Nickname数据操作

来源:互联网 发布:gta5优化 编辑:程序博客网 时间:2024/05/16 11:09


技术:Android联系人数据库分析


知识点:分析联系人中Email和Nickname数据。


重点:数据类型


要操作Email数据,先看看系统提供了Email哪些类型,从模拟器上看数据图:



Email数据有五种类型。


接着从源码查看Android对不同类型的定义:

public static final int TYPE_HOME = 1;public static final int TYPE_WORK = 2;public static final int TYPE_OTHER = 3;public static final int TYPE_MOBILE = 4;

怎么只有四种类型???

当然,还有一种自定义类型,稍后分析。


Email主要数据:

类型:ContactsContract.CommonDataKinds.Email.CONTENT_ITEM_TYPE

操作的数据类型:
ContactsContract.CommonDataKinds.Email.ADDRESS 对应Data.data1:表示email地址。
ContactsContract.CommonDataKinds.Email.TYPE  对应Data.data2:表示email类型。
ContactsContract.CommonDataKinds.Email.LABEL它对应Data.data3:表示自定义类型

当type为多少时,能取自定义类型数据?
根据操作数据经验,一般自定义类型,若没有定义,一般用0或-1去表示。
接着用这两个数据测试:
    当type=0时,能够得到自定义类型的名称。
    当type=-1时,自定义类型名称为Unknown。


以上是对Email数据的操作,比较简单。最注意的点是:对自定义数据类型的操作。


下面是对Nickname数据操作。

这个字段比较简单,一般的手机,一个联系人只有一个nickname。所以,没有特别难的地方。

一般如下图操作:


基本只有一条。


Nickname主要数据:

类型:ContactsContract.CommonDataKinds.Nickname.CONTENT_ITEM_TYPE

Nickname.NAME:对应Data.data1。表示输入的名称。

但在源码中,还发现有类型?它的作用是什么还不知,看看源码:

            public static final int TYPE_DEFAULT = 1;            public static final int TYPE_OTHER_NAME = 2;            public static final int TYPE_MAIDEN_NAME = 3;            /** @deprecated Use TYPE_MAIDEN_NAME instead. */            @Deprecated            public static final int TYPE_MAINDEN_NAME = 3;            public static final int TYPE_SHORT_NAME = 4;            public static final int TYPE_INITIALS = 5;

如果有谁知道此类型的作用,还请告知,谢谢!!!


这个字段是不是so easy!!!


最近,看存入到数据库中的数据,还是用事实说话:


可以证明:Email的type为0时,是自定义类型。但为-1的数据,是没法手动添加,只能由代码操作,这里就不展示了,感兴趣的朋友,可以自己去测试。

但从保存的结果要注意:Email可以插入同类型的数据。但在数据库中是不能区分。所以,要操作这个字段时,注意更新操作(可能把两条更新成两条一样的)。

                                            但,这只是提醒,可能不同的真实手机,会不一样。所以,需要测试。用数据说话,才是王道。


这两个字段,就分析到这里。如果有什么不正确的地方,欢迎指正,共同学习,共同进步!!!稍后,会继续分析联络人的其它字段!!!


源码等分析完其它字段后,再发上来吧,感谢大家的关注!!!




原创粉丝点击