Android系统通讯录的SQLite表的观察

转载 2013年12月06日 01:11:04
在Android系统中一般的应用程序不会将自己的数据暴露给其他应用程序使用。而对于Android手机中都存在的通信录、短信、通话记录、上网记录以及下载记录等消息都是使用数据库来保存,并使用ContentProvider来提供给其他应用程序来维护其数据的。这一节我们将探究通讯录在系统中的保存机制以及如何查询获取通讯录数据,进一步熟悉对共享数据的操作。
系统通讯录的保存
通讯录是系统本身自带的功能,但是默认为空。为了方便看到结果,我们需要向系统通讯录中添加一些数据。在添加好数据之后,我们来看看通讯录的数据库文件保存的这些联系人的信息。在Eclipse中切换到DDMS视图,选择File Explorer标签。打开目录data/data,发现文件夹com.android.providers.contacts,该目录下保存的数据库文件contacts2.db就是系统存储联系人的数据库,我们可以从模拟器中将数据库文件导出,看看系统到底是如何保存联系人的信息的。
系统中用了很多表来记录通讯录的相关信息。虽然表很多,但是大部分不需要过多的研究,只需要注意最常使用的三张表:contacts,data和raw_contacts。
1.contacts表
该表用于记录联系人的基本属性,
_id 是该表的主键,具有自增性
name_raw_contacts_id 是联系人的id号,与raw_contact表中的id关联,通过它可以查询到其他表中的数据。
photo_id 是头像的id,如果没有设置联系人头像,这个字段就为空。
has_phone_number 表示是否有电话号码,值为1,表示至少有1个电话号码。值为0,表示没有。
2.data表
该表用于保存联系人的具体信息,其中第四列是联系人id号,与raw_contact表中的id关联。data1~data15保存着联系人的信息,包括联系人名称,电话号码,电子邮件,地址以及备忘录等等。
3.raw_contacts表
该表用于保存联系人姓名版本号等信息,
contact_id是联系人id号。
version是版本号,用于监听联系人信息是否变化,每修改一次,版本号自增一次。
deleted是删除标志,0为默认,1表示这行数据已经删除。
display_name是联系人名称。
在获取系统通讯录的内容时,就是通过对上面三张表的查询来获得信息的。接下来我们来实现获取通讯录中联系人的信息。

Android软件开发之通讯录——添加联系人以及SQLite工具的简单使用

关于通讯录获取联系人信息以及联系人信息的存储结构,下面链接的博客的博主已经简单说明: http://blog.csdn.net/snwrking/article/detail/7601794 --...
  • Poulfei
  • Poulfei
  • 2016年04月27日 15:10
  • 2079

自制的通讯录APP(SQLite的应用)

转载请附上本文链接并标明作者。 这几天做了一个通讯录APP,主要难点是自己在SQlite建表而不是读取手机联系人的信息以及对SearchView的应用,另外还添加了生日提醒功能,由于时间关系并没有太...
  • qq_28625603
  • qq_28625603
  • 2016年06月28日 00:39
  • 1596

Android SQLite 如何制作一个简易通讯录(附上代码)

实习阶段,今天没什么事可做,就写个通讯录玩玩,供大家参考一下具体实现方法和步骤,希望对大家有用。 首先作为通讯录总得有数据吧,那数据怎么来,又该如何显示呢,我用SQLite存储读写数据的。 先给大...
  • sinat_28566169
  • sinat_28566169
  • 2015年07月31日 15:00
  • 2597

Android 联系人数据库表详解

现在有很多应用都需要读取我们的联系人列表,比如,微信,QQ等等。还有些专门的通讯录应用,就可以不用官方自带的简陋的通讯录,其实所有这些app全部是读取的同一个数据库,就是官方提供唯一的联系人数据库。今...
  • hehongdan
  • hehongdan
  • 2016年07月15日 03:26
  • 8180

[通讯录] android通讯录数据库表解析和添加,访问通讯录

实际应用,“通讯录” 数据读取、添加联系人信息       ** 查看通讯录数据库:            首先启动模拟器、再打开 “File Explorer” 视图,            ...
  • wangqilin8888
  • wangqilin8888
  • 2013年06月05日 15:53
  • 13622

android 中关于Sqlite 表的创建 修改 删除

正好我要用 原文地址:创建、修改、删除表" style="text-decoration:none; color:rgb(99,64,27)">SQLite 创建、修改、删除表作者:醋根 一、...
  • shangxinlei88
  • shangxinlei88
  • 2014年10月31日 14:01
  • 1171

Android SQLite 动态新增表

上篇文章介绍了SQLite的建表方法,但是在项目中会遇到这样的问题。表结构不是一次就能定义得完整,随着项目的发展,需求的变更,数据库中的表项也可能随着增加或者发生改变。 如果从新定义表结构,对导致应...
  • coycleipenghui
  • coycleipenghui
  • 2016年09月11日 00:02
  • 1843

Android通讯录数据库操作

1. ContactsProvider2.java (实现了ContentProvider) 2. ContactsContract.java 所有的联系人Uri,与联系人相关数据库字段均在此定...
  • chaoyu168
  • chaoyu168
  • 2015年10月26日 15:38
  • 1253

Android关于SQLite的日期时间的存储

原文链接:https://segmentfault.com/a/1190000003008234 最近一直在学习Android,由于Xana的Java完全是半路出家,以前一直在用C#、C++和P...
  • u013564276
  • u013564276
  • 2016年06月19日 22:25
  • 1714

android调用系统通讯录,并返回联系人号码和称呼

这是第一篇博客,原因: 经常在网上找一些简单的demo
  • u011368551
  • u011368551
  • 2014年10月08日 17:42
  • 4829
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android系统通讯录的SQLite表的观察
举报原因:
原因补充:

(最多只允许输入30个字)