当前课程知识点:Android应用开发基础 >  第七章 内容提供者ContentProvider >  7.4 访问通讯录 >  7.4 访问通讯录

返回《Android应用开发基础》慕课在线视频课程列表

7.4 访问通讯录在线视频

下一节:7.4.1 实践案例-读取通讯录

返回《Android应用开发基础》慕课在线视频列表

7.4 访问通讯录课程教案、知识点、字幕

本节我们介绍访问通讯录

在Android中

可以使用ContentResolver对通信录中的数据

进行添加 删除 修改和查询等操作

1. 在查询联系人时应该先查询

raw_contacts中的数据

对应的URI分别为ContactsContract.

CommonDataKinds.Phone.CONTENT_URI

URI实际值为

content://com.android.contacts/data/phones

那么uri对应data

contacts raw_contacts这三张表

第二 使用getContentResolver

来获得ContentResolver的对象

3. 通过ContentResolver查询uri

得到数据库游标Cursor c

4. 使用数据库游标Cursor

获取联系人姓名和联系人手机号

下面我们看一下具体的实现过程

如图所示

1. 首先检查应用是否有读取通讯录权限

如图没有权限的话需要向用户申请权限

有权限的话直接调用读取通讯录函数

2. 权限申请的处理

如图所示

Activity或者Fragment中

重写onRequestPermissionsResult() 方法

处理权限结果的回调

当用户处理完授权操作时

系统会自动回调该方法

该方法有三个参数

int requestCode

在调用requestPermissions()时的第一个参数

String[] permissions

权限数组

在调用requestPermissions()时的第二个参数

int[] grantResults

授权结果数组

3. 读取联系人信息数据中的姓名和号码

如图所示

首先获取系统的ContentResolver

使用ContentResolver的query接口

查询系统的电话通讯录数据

如果查询到数据

逐条查询通讯录的数据库数据

查询每一条记录的姓名和号码

将名字和号码信息保存到列表数组中

最后我们看一下实现的效果

如图所示

首先提示需要使用通讯录权限

如果用户允许后

读取通讯录并显示

那么如何插入联系人呢

首先我们看一下数据库data表

我们要插入一条数据到通讯录数据库

需要使用ContentResolver的insert接口

实现过程如图

1. 首先需要使用uri

查询需要添加的号码是否已存入通讯录中

如果不存在则添加

存在则提示用户

2. 在data中表中插入数据

如图所示

uri对象赋值

使用value.put分别将数据写入

"raw_contact_id" "MIMETYPE"

"data2","data1"四列中

使用ContentResolver的insert接口

插入到通讯录数据库

插入后的数据库如图所示

3. 我们再插入数据

那么使用同样的方法在data中表中插入数据

如图所示

使用value.put分别将数据写入

"raw_contact_id","MIMETYPE"

"data2","data1"四列中

使用ContentResolver的insert接口

插入到通讯录数据库

插入后的数据库如图所示

那么下面如何删除联系人呢

首先我们查看一下数据库raw_contacts表

如图所示

数据库表中有_id和display_name这两列

我们需要根据display_name

这一列的约束条件test得到_id这一列的值

实现过程如图所示

首先uri设置为通讯录的

原始数据表raw_contacts

2. 使用ContentResolver的query接口

找出raw_contacts数据表中display_name

这一列值为"test"的行数据

只取"_id"这一列的数据

下面我们看一下如何删除数据

如图所示

在data表中

raw_contact_id等于9的数据有很多行

同时需要删除data表

和原始数据表raw_contacts中的数据

如图所示

1. 查询成功后读取raw_contacts

表中满足条件的行数据的_id的值

2. 根据display_name的值

删除raw_contacts表中的相应数据

3. 根据_id的值删除data表中

raw_contact_id值等于9的相应数据

如何更改联系人呢

首先我们查看一下数据库raw_contacts表

如图所示

数据库表中有_id和display_name这两列

我们需要根据display_name

这一列的约束条件test得到_id这一列的值

实现过程如图所示

1. 首先uri设置为通讯录的原始数据表

raw_contacts

2. 使用ContentResolver的query接口

找出raw_contacts数据表中display_name

这一列值为"test"的行数据

只取"_id"这一列的数据

下面我们看一下如何更改数据

如图所示

在data表中

raw_contact_id等于9的数据有很多行

需要更新的是mimetype为5

也就是电话号码的数据

如图所示

1. 查询成功后读取raw_contacts表中

满足条件的行数据的_id的值为9

2. 使用values.put将要修改的电话号码

放入列data1中

3. 根据_id的值更新data表中

raw_contact_id值等于9

并且mimetype等于5的相应数据

最后我们查看数据库data表

发现数据已更新成功

Android应用开发基础课程列表:

课程教案

-1 Android应用开发基础-课程标准

-2 Android应用开发基础-教案

第一章 Android概述

-讨论:Android应用开发基础资源下载地址

-讨论的问题:华为“鸿蒙系统”会取代安卓吗?

-Android Studio4.1.2安装常用问题汇总2021.3.15

-1.1 Android概述

--1.1 Android概述

--1.1 Android Studio安装与配置-实践案例

-1.1 Android概述--作业

-1.2 Android程序

--1.2 Android程序

--1.2 第一个Android应用程序-实践案例

-1.2 Android程序--作业

-1.3 Android程序调试

--1.3 Android程序调试

--1.3 Android程序调试-实践案例

-1.3 Android程序调试--作业

-讨论-完成第一个Android程序需要多长时间?

第二章 Android视图

-讨论-什么是Activity?

-2.1 Activity概述

--2.1 Activity概述

--2.1.1 实践案例-Activity生命周期

--2.1.2 实践案例-Activity跳转和数据传递

-2.1 Activity概述--作业

-2.2 Activity应用

--2.2 Activity应用

--2.2 实践案例-Activity四种启动模式

-第2章 Android视图--2.2 Activity应用

-讨论-怎么理解常用的四种启动模式?

第三章 Android组件

-讨论:Android在五个常用布局外还有哪几种布局方式?

-3.1 Activity布局

--3.1 Activity布局

--3.1 实践案例-Android布局

-3.1 Activity布局--作业

-3.2 Android基础组件

--3.2 Android基础组件

--3.2.1 实践案例-文本和按钮组件

--3.2.2 实践案例-编辑框和进度条组件

-3.2 Android基础组件--作业

-3.3 Android中级组件

--3.3 Android中级组件

--3.3.1 实践案例-复选框和开关组件

--3.3.2 实践案例-单选框和图像组件

-3.3 Android中级组件--作业

-3.4 Android适配器

--3.4.1 系统适配器

--3.4.2 自定义适配器

--3.4.1实践案例-系统适配器

--3.4.2 实践案例-自定义适配器

-3.4 Android适配器--作业

-讨论-如何解决Android的布局嵌套问题的?

第四章 Android Fragment

-讨论:Fragment的优点?

-4.1 Fragment碎片组件

--4.1.1 Fragment静态加载

--4.1.2 Fragment与Activity通讯

--4.1.3 Fragment动态加载

--4.1.1 实践案例-Fragment静态加载

--4.1.2 实践案例-Fragment的动态加载

-4.1 Fragment碎片组件--作业

-4.2 ViewPager翻页类组件

--4.2.1 ViewPager翻页类组件

--4.2.2 引导页和标题栏

--4.2 实践案例-引导页和选项卡

-4.2 ViewPager翻页类组件--作业

-讨论:fragment与activity的生命周期有哪些不同?

第五章 广播

-讨论:Android广播有什么作用?

-5.1 Android广播概述

--5.1 Android广播概述

--5.1.1 实践案例-手机电量显示

--5.1.2 实践案例-手机充电状态显示

-5.1 Android广播概述--作业

-5.2 Android广播工作原理

--5.2 Android广播工作原理

--5.2.1 实践案例-手机网络状态显示

--5.2.2 实践案例-短消息接收

-5.2 Android广播工作原理--作业

-5.3 自定义广播

--5.3 自定义广播

--5.3 实践案例-自定义广播与有序广播

-第5章 广播--5.3 自定义广播

-5.4 有序广播

--5.4有序广播

--5.4.2 实践案例-登录广播-记住密码

--5.4.2 实践案例-登录广播-强制退出

-第5章 广播--5.4 有序广播

-讨论:广播的动态注册和静态注册有什么区别?

第六章 Android服务

-讨论:Android的服务有什么作用?

-6.1 系统服务概述

--6.1 系统服务概述

-6.1 系统服务概述--作业

-6.2 访问系统服务

--6.2 访问系统服务

--6.2 实践案例-通知服务

-6.2 访问系统服务--作业

-6.3 自定义服务

--6.3 自定义服务

--6.3.1 实践案例-启动服务

--6.3.2 实践案例-绑定服务

--6.3.3 实践案例-后台服务

-第6章 Android服务--6.3 自定义服务

-6.4 多线程

--6.4 多线程

--6.4.2 实践案例-MyService下载

--6.4.3 实践案例-MyIntentService

--6.4.4 实践案例-AsyncTask实现对话框下载

--6.4.5 实践案例-下载精灵

-第6章 Android服务--6.4 多线程

-讨论:Android中怎么启动Service?

第七章 内容提供者ContentProvider

-讨论:ContentProvide的作用是什么?

-7.1 Android运行权限

--7.1 Android运行权限

--7.1 实践案例-拨打电话与发送短信

-7.1 Android运行权限--作业

-7.2 URL URI概述

--7.2 URL URI概述

-第7章 内容提供者ContentProvider--7.2 URL URI概述

-7.3 ContentProvider概述

--7.3 ContentProvider概述

--7.3 实践案例-读取联系人

-第7章 内容提供者ContentProvider--7.3 ContentProvider概述

-7.4 访问通讯录

--7.4 访问通讯录

--7.4.1 实践案例-读取通讯录

--7.4.2 实践案例-添加通讯录

--7.4.3 实践案例-删除更改通讯录

-第7章 内容提供者ContentProvider--7.4 访问通讯录

-7.5 课后作业案例

--7.5.1 实践案例-文件管理器-查看

--7.5.2 实践案例-文件管理器-播放

-讨论:ContentProvide如何使用?

第八章 多媒体

-讨论:Android多媒体主要应用于哪些场景?

-8.1 相机服务

--8.1 相机服务

--8.1.1实践案例-拍照服务

--8.1.2 实践案例-相册服务

-8.1 相机服务--作业

-8.2 音视频服务

--8.2 音视频服务

--8.2.1实践案例-音乐播放

--8.2.2 实践案例-视频播放

-8.2 音视频服务--作业

-讨论:Android视频组件的使用流程?

第九章 网络技术

-讨论:为什么使用Json作为网络的通讯格式?

-9.1 网络服务概述

--9.1 网络服务概述

--9.1 实践案例-WebView和Http服务

-9.1 网络服务概述--作业

-9.2 网络框架

--9.2 网络框架

--9.2 实践案例-okhttp框架

-9.2 网络框架--作业

-9.3 Json

--9.3 Json

--9.3 实践案例-json协议

-第9章 网络技术--9.3 Json

-9.4 Volley

--9.4 volley

--9.4 实践案例-volley框架

-第9章 网络技术--9.4 Volley

-讨论:OkHttp和Volley的有什么区别?

第十章 数据存储

-讨论:Android的存储方式有哪几种?

-10.1 文件存储

--10.1 文件存储

--10.1.1 实践案例-文件读写布局

--10.1.2 实践案例-文件读写

--10.1.3 实践案例-SharedPreference文件读写

-10.1 文件存储--作业

-10.2 数据库存储

--10.2 数据库存储

--10.2.1 实践案例-Sqlite数据库操作布局

--10.2.2 实践案例-Sqlite数据库操作

-10.2 数据库存储--作业

-讨论:SQLite的基础操作的流程是什么?

课程实训(不计入考核)

-第1章 实训简介以及开发环境配置

--实训项目简介PPT以及实训指导书

--1.1 实训项目简介

--1.2 项目开发环境配置

-第2章 在线音乐播放器整体设计以及服务端开发

--在线音乐播放器整体介绍PPT以及服务端开发实训指导书

--2.1 在线音乐播放器-整体设计

--2.2 在线音乐播放器-服务端开发

-第3章 在线音乐播放器-客户端开发

--3.1 客服端开发实训指导书以及PPT

--3.2 客户端开发-讲课视频

-第4章 在线音乐播放器-完整版

--4.1 实训指导书以及PPT

--4.2 在线音乐播放器-完整版授课视频

-第5章 QQ聊天项目

--5.1 实训指导书以及PPT

--5.2 QQ聊天项目授课视频

-第6章 在线点餐系统

--6.1 实训指导书以及PPT

--6.2 在线点餐系统授课视频

7.4 访问通讯录笔记与讨论

也许你还感兴趣的课程:

© 柠檬大学-慕课导航 课程版权归原始院校所有,
本网站仅通过互联网进行慕课课程索引,不提供在线课程学习和视频,请同学们点击报名到课程提供网站进行学习。