技术: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可以插入同类型的数据。但在数据库中是不能区分。所以,要操作这个字段时,注意更新操作(可能把两条更新成两条一样的)。

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


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


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




更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. 一句话锁定MySQL数据占用元凶
  3. RxJava(十)switchIfEmpty 操作符实现 Android(安卓)检查本地缓存逻
  4. MediaCodec基本原理及使用
  5. android greenDao SQLite数据库操作工具类
  6. Android(安卓)SQLiteDatabase使用总结
  7. 【转】android sqlite支持的数据类型
  8. 2.运行我的第一个Android程序,学习四大组件
  9. Android(安卓)adb opendir failed ,permission denied

随机推荐

  1. Android消息通信之无所不能的第三方开源
  2. Android设计模式系列(6)--SDK源码之享元
  3. android apk广告去除
  4. Android对话框大融合
  5. 如何在android中实现swipe的手势功能及页
  6. android学习笔记(一)
  7. Android(安卓)mediaplayer
  8. Android中UI设计的一些技巧!!!
  9. Android(安卓)JNI介绍
  10. Android(安卓)解决ListView 和 ScrollVie