[android研究联系人之二]联系人Email/Nickname数据操作
技术: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可以插入同类型的数据。但在数据库中是不能区分。所以,要操作这个字段时,注意更新操作(可能把两条更新成两条一样的)。
但,这只是提醒,可能不同的真实手机,会不一样。所以,需要测试。用数据说话,才是王道。
这两个字段,就分析到这里。如果有什么不正确的地方,欢迎指正,共同学习,共同进步!!!稍后,会继续分析联络人的其它字段!!!
源码等分析完其它字段后,再发上来吧,感谢大家的关注!!!
更多相关文章
- SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
- 一句话锁定MySQL数据占用元凶
- RxJava(十)switchIfEmpty 操作符实现 Android(安卓)检查本地缓存逻
- MediaCodec基本原理及使用
- android greenDao SQLite数据库操作工具类
- Android(安卓)SQLiteDatabase使用总结
- 【转】android sqlite支持的数据类型
- 2.运行我的第一个Android程序,学习四大组件
- Android(安卓)adb opendir failed ,permission denied