WEB开发网
开发学院手机开发Android 开发 Android通讯录查询篇--ContactsContract.Data 阅读

Android通讯录查询篇--ContactsContract.Data

 2010-12-18 08:03:45 来源:WEB开发网   
核心提示:这次主要要做的就是根据姓名来查找电话,并且加强对通讯录的理解,Android通讯录查询篇--ContactsContract.Data,以前做一些用到数据库的东西的时候,可能光看代码也是不好联系起各个数据之间的关系,现在对于这个应该就有点感觉了,再看一下表的结构,所以我先想到的还是数据库,幸运的是

这次主要要做的就是根据姓名来查找电话,并且加强对通讯录的理解。

以前做一些用到数据库的东西的时候,可能光看代码也是不好联系起各个数据之间的关系,所以我先想到的还是数据库。幸运的是,它还真是一个数据库。

Android里面内置的是SQLite的数据库,虽然对数据库不怎么了解,但关系型数据库,基本操作也就那些,而且基本都一样,所以就直接用呗。

用命令行下的adb shell进入Android的模拟器,进入data/data目录下面,这里面就是安装的一些应用程序。找啊找,里面有一个 com.android.providers.contacts,怎么看都是一个通讯录相关的程序,进入这个目录下,里面有一个databases,就它了,再进去就可以看到有个contacts2.db的文件。

用sqlite3打开这个数据库文件。查看里面的表。里面表很多,不过看两遍后发现表的名字很熟悉,像什么data,raw_contacts,contacts,minetypes等,前面几个都是我们上次说的那几个所谓的数据模型,它们还真是数据库。

查询一下data表里面的所有信息,可以发现里面的信息联系起来就都是我们通讯录里面的名片。虽然不是一条显示全部,但每个名字每个电话,每个E-mail都有,而且都是分开显示的。现在对于这个应该就有点感觉了。

再看一下表的结构,用”.schema” 命令后会看到,类似如下的信息:

.schema data

CREATE TABLE data (

_id INTEGER PRIMARY KEY AUTOINCREMENT,

package_id INTEGER REFERENCES package(_id),

mimetype_id INTEGER REFERENCES mimetype(_id) NOT NULL,

raw_contact_idINTEGER REFERENCES raw_contacts(_id) NOT NULL,

is_primary INTEGER NOT NULL DEFAULT 0,

is_super_primary INTEGER NOT NULL DEFAULT 0,

data_version INTEGER NOT NULL DEFAULT 0,

data1 TEXT,

data2 TEXT,

data3 TEXT,

data4 TEXT,

data5 TEXT,

data6 TEXT,

data7 TEXT,

data8 TEXT,

data9 TEXT,

data10 TEXT,

1 2 3 4 5 6  下一页

Tags:Android 通讯录 查询

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接