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

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

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

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

时间: 2024-09-14 13:37:22

[android研究联系人之二]联系人Email/Nickname数据操作的相关文章

[android研究联系人之一]联系人IM/website数据操作

最近要忙于工作了,工作中的事情有点多,也没时间做UI了.不过,等过一点时间充裕.会继续推出新的学UI博客.感谢大家的关注!!! 这篇博客,主要是要介绍android联系人数据操作,讲解一些工作中遇到的一些新情况.分享给大家! 从Android2.2以后,android又经过几个版本的更新,联系人这块的操作已经发生了很大的变化.这次先讲解今天遇到两个数据操作问题: 一.联系人中IM数据怎样更新?        先看IM有哪些数据,看图: 总共类型,大概有10种,包括用户可以自定义类型. 先介绍主要

[android研究联系人之三]联系人Phone/Organization数据操作

技术:Android联系人数据库分析 知识点:分析联系人中Phone和Organization数据. 重点:数据类型 联系人数据库中,最重要的当然是手机号字段.接下来仔细分析该字段了. 先看Android提供了多少种类型:下面是从模拟器中截的类型图: 看到这么多截图,就知道一个手机字段的类型有多少了吧.总共21种类型(实际真实的手机中,当然不会有这么全). 来看系统源码中对类型的定义: public static final int TYPE_HOME = 1; public static fi

Android编程实现通讯录中联系人的读取,查询,添加功能示例

本文实例讲述了Android编程实现通讯录中联系人的读取,查询,添加功能.分享给大家供大家参考,具体如下: 先加二个读和写权限: <uses-permission android:name="android.permission.READ_CONTACTS" /> <uses-permission android:name="android.permission.WRITE_CONTACTS" /> 具体代码: package com.ebo

Android 开机如何导入大量联系人?

问题描述 Android 开机如何导入大量联系人? 我现在有个需求, 开机导入1800 多服务号码到联系人数据库,而且对外要隐藏,只有拨号匹配这些服务号码. 在哪里操作会比较好一点? 解决方案 Android中联系人导入 解决方案二: http://jingyan.baidu.com/article/7f766dafbacff04100e1d047.html 解决方案三: 这需要读取通讯录的权限,还需要机主同意

通讯录-android 如何判断没有获取联系人的权限

问题描述 android 如何判断没有获取联系人的权限 获取通讯录联系人时,如果用户禁止本应用获取联系人权限,我如何得到这个状态并处理呢 解决方案 Android手机root权限的判断与获取 解决方案二: 判断有没有某个权限,貌似API里面是判断不了的. 如果你生命了一个权限. 在使用的时候加上 try{ }catch{ } 如果catch 了,就表示当前没有这个权限.

android 调用系统的添加联系人界面,如何获得添加的联系人的名字或者电话号码?

问题描述 android 调用系统的添加联系人界面,如何获得添加的联系人的名字或者电话号码? 如题,请问我怎么样才能获得返回结果呢?意思就是我要添加联系人,并在保存的时候知道这个联系人的号码和姓名? 我调用startActivityForResult data直接返回null,resultCode 都不对,返回0,请问我该怎么写才能获得返回的结果? 解决方案 http://blog.csdn.net/snwrking/article/details/7601794 解决方案二: 跳转之前,在in

Android访问通讯录和添加联系人

package com.example.test; import java.util.ArrayList; import android.content.ContentProviderOperation; import android.content.ContentResolver; import android.content.ContentUris; import android.content.ContentValues; import android.database.Cursor; i

Android编程实现读取手机联系人、拨号、发送短信及长按菜单操作方法实例小结_Android

本文实例讲述了Android编程实现读取手机联系人.拨号.发送短信及长按菜单操作方法.分享给大家供大家参考,具体如下: 1.Andrid项目结构图↓主要操作图中红色方框内的文件. 2.首先布局代码如下 a, main.xml 程序运行的主界面,主要用ListView列表控件展示手机联系人 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://s

android中利用ContentProvider管理系统联系人

我们都知道ContentProvider是用来共享数据的,然而android本身就提供了大量的ContentProvider,例如联系人信息,系统的多媒体信息等,这些系统的ContentProvider都提供了供其他应用程序访问的Uri,开发者可以通过ContentResolver来调用系统的ContentProvider提供的insert()/update()/delete()/query()方法,从而实现自己的需求. 1.了解系统联系人的结构 (1)android系统对联系人管理提供了很多的