一、通讯录应用介绍
通讯录应用是Android自带的应用程序,我们看到此应用的时候,可能只认为这是一个应用,用数据库存储数据,但是实际上不是这样的。
通讯录是ContentProvider的应用,通讯录由两部分组成:
(1)com.android.providers.contacts的ContentProvider:真正存储数据的ContentProvider
(2)com.android.contacts:运用ContentResolver获取数据的图形用户界面;
二、获取ContactProvider的源代码
Android源代码: http://my.oschina.net/zhanglubing/blog/40623用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,以及要访问通讯录需要的权限;
主要的通讯录程序为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存放类型,比如住宅,单位等;
四、对通信录做增删改查
简单的说:对通讯录操作就是对一个普通的ContentProvider操作;
1.Query
(1)根据电话号码查询姓名
(2)查询所有的联系人
2.Insert
(1)一步一步添加数据
(2)批量添加数据
核心代码:
(1)ContentProviderOperation operation = ContentProviderOperation.newInsert(uri).withValue("key","value").build();
(2)resolver.applyBatch("authorities",operations);//批量提交
3.Delete
核心思想:
(1)先在raw_contacts表根据姓名查出id;
(2)在data表中只要raw_contact_id匹配的都删除;
4.Update
核心思想:
(1)不需要更新raw_contacts,只需要更新data表;
(2)uri=content://com.android.contacts/data 表示对data表进行操作;
分享到:
相关推荐
对安卓手机通讯录中的联系人进行增、删、改、查等操作,本资源只有一个java工具类,不是完整的项目,支持根据手机号查询联系人对应的RawContactId.
基于安卓开发和设计的一款APP,实现手机通讯录的功能,实现通讯录头像图片的上传与显示,增删改查通讯录人员功能基于安卓开发和设计的一款APP,实现手机通讯录的功能,实现通讯录头像图片的上传与显示,增删改查...
JSP增删改查 -简易通讯录 JSP增删改查 -简易通讯录
自己学习Android的时候写的项目: 安卓电话簿课程设计(实现对联系人的增删改查)
利用python,写的一个简单的通讯录程序,可以进行增删改查。
android 手机通讯录 增删改查,直接拨号,发信息 android开发的手机简单的通讯录,简单大方美观
个人总结的通讯录操作的增删改查,里面包含两种progressdialog的用法,使用原生的和自定义的。没有具体的update方法,看完后我想你们自己应该可以写出来updata方法了,界面呢不是太好看,勿喷啊!删除和查询我添加了...
1:Android运用SQL数据库对数据经行简单的增删改查,并把最终结果显示在对应的区域! 2:四个功能条例清晰,方法陈列工整,让看起来更加易懂! 3:压缩包解压后直接打开AndroidStudio软件导入即可运行,100%包运行!...
java语言实现简单的QQ通讯录,具有增删改查功能,无图形化界面,导入eclipse即可使用
greendao 实现增删改查功能,代码简单易懂,android studio 工程
android 增删改查
【Android】Sqlite数据库增删改查工程源代码(修改版)
C++通讯录管理系统(对文件进行增删改查).pdf
自己做的android作业,比较简单,实现电话号码的增删改查,里面的功能实现截图
Servlet(增删改查)模拟网络通讯录
根据Android数据存储的内容,综合应用SharedPreferences和SQLite数据库实现一个用户信息管理系统,强化对SharedPreferences的理解的使用,熟练掌握SQLite的操作。 要求: 1. 巩固Android应用开发工具(Eclipse或者...
Android SQLite增删改查基本用法,通讯录实现 知识点包含: ListView控件的基本使用 SQLite数据库增删改查
用java编写的通讯录,能实现增删改查等功能
java 简单QQ通讯录具有增删改查功能.zipjava 简单QQ通讯录具有增删改查功能.zip
对简单的通讯录信息进行增删改查,适合Java初学者使用,通俗易懂