android 2.x与1.x联系人的数据库设计有很大不同,在做联系人相关的开发时,先要确定系统的版本。

boolean mAndroid2 =android.os.Build.VERSION.RELEASE.startsWith("2.");

本文是开发过程中的一些比较整理,适用的是2.x以后的版本。

Overall.

联系人的主要数据存放在raw_contacts和data表里,它两构成主从表关系。

raw_contacts表结构:

data表结构:

每个联系人在raw_contacts里有一条记录,像地址,名称,email,电话等等数据都在data存放在data里,这样设计的好处是易扩展,比如要增加一个联系人的email地址时,只要在data里增加一条记录。

联系人的数据库比较复杂,在联系人相关应用开发中,一般也不直接通过数据库字段来操作,主要用视图(指定的Uri)来操作。

下面说说我在开发工作中用到的一些联系人的数据。


名字:

Uri: Uri.parse("content://com.android.contacts/data")

PREFIX = "data4"; //名称前缀
MID_NAME = "data5";//中间名
GIVEN_NAME = "data2";//名字
FAMILY_NAME = "data3";//姓氏
MID_PINYIN="data8"; //中间名拼音
String FAMILY_NAME_PINYIN="data9"; //姓氏拼音
String SUFIX = "data6"; //名称后缀
String SUFIX_PINYIN="data7"; //名字拼音


电话:

Uri: Uri.parse("content://com.android.contacts/data/phones"

phone: "data1";//号码

Type: "data2";//这个字段是整形值,指示电话类型

类型对应关系如下:

TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_MOBILE = 2;
TYPE_WORK = 3;
TYPE_FAX_WORK = 4;
TYPE_FAX_HOME = 5;
TYPE_PAGER = 6;
TYPE_OTHER = 7;

Email:

Uri:Uri.parse("content://com.android.contacts/data/emails")

Email: "data1";//邮箱地址

Type: "data2";//这个字段是整形值,指示Email类型

类型对应关系如下:

TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;
TYPE_MOBILE = 4;

地址:

Uri:Uri.parse("content://com.android.contacts/data/postals")

STREET="data4";//街道
CITY="data8";//城市
STATE="data7";//州
ZIP_CODE="data9";//邮政编码

Type:"data2";//type的类型如下

TYPE_CUSTOM = 0;
TYPE_HOME = 1;
TYPE_WORK = 2;
TYPE_OTHER = 3;

转载于:https://www.cnblogs.com/devxiaobai/archive/2011/12/14/contactStruct.html

android 联系人存储结构相关推荐

  1. Android联系人Contacts详解

    1.获取联系人详细信息 在(一)中我们只是获取了联系人的ID和NAME,但是这是远远不够的,怎么样获取其他的值呢? public void fetchContactInformation() {Str ...

  2. Android文件系统的结构

    Android 4.2.2 版本的文件系统 内核版本为 3.0.31 版本号为JDQ39 factory//估计是存放网络通信协议的登录密钥的 |-- bluetooth |-- hdcp.keys ...

  3. Android文件系统的结构及目录用途、操作方法 整理

    https://blog.csdn.net/TskyFree/article/details/43935595 1.android文件系统的结构 android源码编译后得到system.img,ra ...

  4. Android文件系统的结构及目录用途、操作方法

    以下内容转载 1.android文件系统的结构 android源码编译后得到system.img,ramdisk.img,userdata.img映像文件.其中,ramdisk.img是emulato ...

  5. android源码结构

    android源码结构 Android 2.1 |-- Makefile |-- bionic (bionic C库) |-- bootable (启动引导相关代码) |-- build (存放系统编 ...

  6. android方法数据库的权限,Android数据存储,运行时权限

    Android存储目录 Android的底层支持是Linux,不同于Windows,没有分盘的概念,是以文件夹形式呈现,可以理解为一个应用就是一个用户. data目录 手机内部存储目录(手机本身内存) ...

  7. 运用单例模式、建造者模式和策略模式实现异步加载Android联系人资料

    学完设计模式很久了,最近又在看Android联系人提供程序的官方文档,于是就想实现一个方便的联系人管理程序demo,而联系人管理程序demo的核心就是要实现一个异步加载联系人资料的类,于是就有了下文. ...

  8. Android数据存储——2.文件存储_C_DOM解析XML文档

    今天学习Android数据存储--文件存储_DOM解析XML文档 位于org.w3c.dom操作XML会比较简单,就是将XML看做是一颗树,DOM就是对这颗树的一个数据结构的描述,但对大型XML文件效 ...

  9. android+默认存储,Android 数据存储之SP存储,内部存储,外部存储

    Android 数据存储之SP存储,内部存储,外部存储 Android提供了多种数据存储的技术来永久的保存应用数据,以便于开发者能够根据自己的需求来选择合适的数据存储方案,主要有SharedPrefe ...

最新文章

  1. 【Linux 内核】编译 Linux 内核 ② ( 解压内核源码 | 查询当前 Linux 内核版本号 | 进入并查看 linux 内核源码目录 )
  2. [YTU]_2353 ( 长方柱类【C++ 类定义】)
  3. yunyang tensorfow-yolo3 训练时权重文件消失的原因和解决办法(max_to_keep)
  4. 开放网络的承诺:它真的做到了吗?
  5. Python3成员运算符(List元素是否存在)
  6. 【树莓派】树莓派3B安装宝塔面板并配置安装LNMP
  7. 求二叉树上结点的路径c语言版,求二叉树根到给定节点的路径设计报告.doc
  8. 在Python中什么是slicing?
  9. 【知识整理】这可能是最好的RxJava 2.x 入门教程(四)
  10. 使用RN开发App,引入图标失效问题的解决
  11. 论文中的CNN网络绘制软件
  12. Python计算点到直线距离的两种方法
  13. java 设置表头字体_Java将数据按列写入Excel并设置格式(字体、背景色、自动列宽、对齐方式等)...
  14. 安全性测试(一)--网页安全检查
  15. Chrome主页被强制修改为百度解决办法
  16. 【kali】34 WEB渗透——扫描工具w3af_console
  17. 荒野、车居生活与自由世界——读《车轮上的瓦尔登湖》
  18. vue.js中created()与activated()的个人使用理解
  19. 多箭齐发稳增长 地方两会圈定2022年经济重点
  20. 韭菜种植与收割:发布你自己的 ICO

热门文章

  1. 2016CCPC合肥赛区总结
  2. opencv 对图像进行卷积
  3. 简单RAM存储器分析
  4. sphinx php mysql_Sphinx+MySQL+PHP 12亿DNS数据秒查
  5. springboot接口返回封装与异常控制
  6. vim学习 07——跳转缩进
  7. java进程CPU飙高
  8. 【工具】(转)PowerDesigner最基础的使用方法入门学习
  9. oracle函数listagg的使用说明(分组后连接字段)
  10. 【JQuery NoviceToNinja系列】目录