当前课程知识点:Android应用开发基础 >  第七章 内容提供者ContentProvider >  7.3 ContentProvider概述 >  7.3 ContentProvider概述

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

7.3 ContentProvider概述在线视频

下一节:7.3 实践案例-读取联系人

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

7.3 ContentProvider概述课程教案、知识点、字幕

本节我们介绍ContentProvider

ContentProvider是Android的四大组件之一

ContentProvider一般为

存储和获取数据提供统一的接口

可以在不同的应用程序中共享数据

ContentProvider的架构如图所示

1. ContentProvider提供了

对底层数据存储方式的抽象

比如图中

底层使用了SQLite数据库

在使用了ContentProvider封装后

即使你把数据库换成MongoDB

也不会对上层数据使用层代码产生影响

2. Android框架中的一些类

需要ContentProvider类型数据

如果你想让你的数据可以使用在

如SyncAdapter, Loader

CursorAdapter等类上

那么你就需要为你的数据做一层

ContentProvider的封装

3. ContentProvider为应用间的交互

提供了一个安全的环境

它准许你把自己的应用数据根据需求

开放给其他应用进行增 删 改 查

而不用担心直接开放数据库权限

而带来的安全问题

ContentProvider是对数据层的封装

我们可以通过ContentResolver

来对不同的ContentProvider进行

增 删 改 查的操作

如图所示

Android为常见的一些数据

提供了默认的ContentProvider

包括音频 视频 图片和通讯录等

所以我们可以在其他应用程序中

通过URI获取这些数据

比如通过content://com.android,contacts/data

来获取通讯录数据

ContentProvider中的URI有固定格式

如图所示

1. Authority 授权信息

用以区别不同的ContentProvider

2. Path 表名

用以区分ContentProvider中不同的数据表

Id:Id号

用以区别表中的不同数据

如果是自定义的数据

其他应用程序可以通过自定义共享的URI标识

比如com.example.app.provider来访问数据

为什么我们不直接访问Provider

而是又在上面加了一层ContentResolver来进行操作

这样岂不是更复杂了吗

如图所示

大家要知道一台手机中可不是只有一个Provider内容

它可能安装了很多含有Provider的应用

比如联系人应用

日历应用 字典应用等等

所以Android提供了ContentResolver

来统一管理与不同ContentProvider间的操作

ContentProvider要实现的方法如下

1. onCreate方法用于初始化Provider

2. query方法用于提供数据查询能力

3. insert方法用于提供增加数据的能力

update方法用于提供更新数据的能力

delete方法用于提供删除数据的能力

6. getType方法

用于返回ContentProvider中的数据类型

下面我们以Query为例子讲解调用的接口

Query的接口参数如图所示

1. uri:通过URI指定查询应用程序的表

2. projection:指定应用程序表的列名

3. selection:指定列名中的元素字段的约束条件

4. selectionArgs

为where中的占位符提供具体的值

5. sortOrder:指定查询结果的排序方式

下图我们以一个通讯录的实例

讲解参数的具体使用方法

如图所示

1. uri:通讯录的原始数据表

2. projection:通讯录数据列表有很多内容

只需要查询_ID这一列

3. selection:约束条件为display_name这一列

4. selectionArgs

从通讯录数据列表中

查询display_name列值为"test"的数据行

只需要_id这一列的数据

5. sortOrder:指定查询结果的排序方式为默认

那么Android Sdk 25中

提供的ContentProvider接口大概为10类

如图所示

以联系人为例

数据存储位置在

/data/data/com.android.providers.

contacts/database

contact2.db中存储了联系人的基本信息

那么contacts2.db主要有四个表

contacts,data,mimetypes,raw_contacts

那么这些表的内容主要如下

1. contacts表简单存储了联系人一些信息

比如外键字段name_raw_contact_id

对应着表raw_contacts表中的字段_id

2. data表简单存储了联系人详细数据

外键字段raw_contact_id

对应着表raw_contacts表中的字段_id

3. raw_contacts表联系人存储数据的核心表

外键字段raw_contact_id

对应着表raw_contacts表中的字段_id

4. mimetypes表 联系人相关的数据分类

主要包括email phone im等

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.3 ContentProvider概述笔记与讨论

也许你还感兴趣的课程:

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