当前课程知识点:Android应用开发基础 > 第七章 内容提供者ContentProvider > 7.3 ContentProvider概述 > 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 Studio4.1.2安装常用问题汇总2021.3.15
-1.1 Android概述
--1.1 Android Studio安装与配置-实践案例
-1.1 Android概述--作业
-1.2 Android程序
-1.2 Android程序--作业
-1.3 Android程序调试
-1.3 Android程序调试--作业
-2.1 Activity概述
-2.1 Activity概述--作业
-2.2 Activity应用
-第2章 Android视图--2.2 Activity应用
-3.1 Activity布局
-3.1 Activity布局--作业
-3.2 Android基础组件
-3.2 Android基础组件--作业
-3.3 Android中级组件
-3.3 Android中级组件--作业
-3.4 Android适配器
-3.4 Android适配器--作业
-4.1 Fragment碎片组件
-4.1 Fragment碎片组件--作业
-4.2 ViewPager翻页类组件
-4.2 ViewPager翻页类组件--作业
-讨论:fragment与activity的生命周期有哪些不同?
-5.1 Android广播概述
-5.1 Android广播概述--作业
-5.2 Android广播工作原理
-5.2 Android广播工作原理--作业
-5.3 自定义广播
-第5章 广播--5.3 自定义广播
-5.4 有序广播
--5.4有序广播
-第5章 广播--5.4 有序广播
-6.1 系统服务概述
-6.1 系统服务概述--作业
-6.2 访问系统服务
-6.2 访问系统服务--作业
-6.3 自定义服务
-第6章 Android服务--6.3 自定义服务
-6.4 多线程
--6.4 多线程
-第6章 Android服务--6.4 多线程
-7.1 Android运行权限
-7.1 Android运行权限--作业
-7.2 URL URI概述
-第7章 内容提供者ContentProvider--7.2 URL URI概述
-7.3 ContentProvider概述
-第7章 内容提供者ContentProvider--7.3 ContentProvider概述
-7.4 访问通讯录
-第7章 内容提供者ContentProvider--7.4 访问通讯录
-7.5 课后作业案例
-8.1 相机服务
--8.1 相机服务
-8.1 相机服务--作业
-8.2 音视频服务
-8.2 音视频服务--作业
-9.1 网络服务概述
-9.1 网络服务概述--作业
-9.2 网络框架
--9.2 网络框架
-9.2 网络框架--作业
-9.3 Json
--9.3 Json
-第9章 网络技术--9.3 Json
-9.4 Volley
-第9章 网络技术--9.4 Volley
-10.1 文件存储
--10.1.3 实践案例-SharedPreference文件读写
-10.1 文件存储--作业
-10.2 数据库存储
-10.2 数据库存储--作业
-第1章 实训简介以及开发环境配置
-第2章 在线音乐播放器整体设计以及服务端开发
-第3章 在线音乐播放器-客户端开发
-第4章 在线音乐播放器-完整版
-第5章 QQ聊天项目
-第6章 在线点餐系统