Welcome 微信登录
编程资源 图片资源库 蚂蚁家优选 PDF转换器

首页 / 操作系统 / Linux / Android入门教程:增删改查通讯录

一、通讯录应用介绍通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的。通讯录是ContentProvider的应用,通讯录由两部分组成:(1)com.android.providers.contacts的ContentProvider:真正存储数据的ContentProvider(2)com.android.contacts:运用ContentResolver获取数据的图形用户界面;二、获取ContactProvider的源代码Android源代码:   http://www.linuxidc.com/Linux/2012-07/64346.htm 用git获取;如果要获取ContactProvider,则安装git,并打开git bash,输入git clone https://android.googlesource.com/platform/packages/providers/ContactsProvider.git 即可;为何要获取ContactProvider的源代码呢?因为如果要访问ContentProvider,必须要了解URI的设置(authority,path等);只有查看源代码才能够知道;AndroidManifest.xml为清单文件,列出了ContactProvider的authorities,以及要访问通讯录需要的权限;
  1. <uses-permission android:name="android.permission.READ_CONTACTS" />  
  2. <uses-permission android:name="android.permission.WRITE_CONTACTS" />  
主要的通讯录程序为ContactsProvider2.java,authorities为:contacts或com.android.contacts;

三、通讯录数据库结构介绍

表结构如下:



通讯录是存放在/data/data/com.android.providers.contacts/databases/contacts2.db,里面主要的表有:(1)raw_contacts:存放联系人的ID,_id属性为主键,声明为autoincrement,即不需要手动设置,其他属性也不需要手动设置就有默认值;display_name属性为姓名;(2)mimetypes:存放数据的类型,比如"vnd.android.cursor.item/name"表示“姓名”类型的数据,"vnd.android.cursor.item/phone_v2"表示“电话”类型的数据;(3)data:存放具体的数据;raw_contact_id属性用来连接raw_contacts表,每条记录表示一个具体数据;我们主要的数据(email、phone等)都存放在data表;data1属性存放总数据;data2属性:-如果此记录存放姓名,则data2存放名;-如果此记录存放电话,则data2存放类型,比如手机、家电;-如果此记录存放组织,则data2存放类型,比如公司、其他;-如果此记录存放地址,则data2存放类型,比如住宅,单位等;