Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >Android网络与数据存储——ContentProvider

Android网络与数据存储——ContentProvider

作者头像
trampcr
发布于 2018-09-28 07:44:43
发布于 2018-09-28 07:44:43
1.1K0
举报
文章被收录于专栏:7号代码7号代码

先看看谷歌的定义:内容提供者将一些特定的应用程序数据提供给其它应用程序使用,数据可以存储于文件系统SQLite或其他方式。内容提供者继承于ContentProvider基类,为其它应用程序取用和存储它管理的数据实现了一套标准方法,应用程序不直接调用这些方法,而是使用ContentResolver对象调用它的方法作为替代。ContentResolver可以与任意内容提供者进行会话,与其合作来对所有相关交互通讯进行管理。

一.如何完整的开发一个ContentProvider?


  1. 定义一个继承自ContentProvider基类的类。实现如下几个方法:
  • onCreate():在ContentProvider创建后会被调用。
  • insert():根据Uri插入values对应的数据。
  • delete():根据Uri删除selection条件所匹配的全部记录。
  • update():根据Uri修改selection条件所匹配的全部记录。
  • query():根据Uri查询出selection条件所匹配的全部记录。projection是一个列名列表,表明只选择出指定的数据列。
  • getType():返回当前Uri所代表的数据的MIME类型。
  1. 在AndroidManifest.xml中注册自定义的ContentProvider类,注册时还需要指定authorities属性即Uri。

这时,其它应用就可以通过该Uri来访问该ContentProvider所暴露的数据了。那Uri究竟是什么呢?

二.Uri是什么?


Uri代表了要操作的数据表的绝对路径,它主要包含了两个部分信息:

  • 需要操作的ContentProvider
  • 对ContentProvider中的那个表进行操作。

一个Uri由以下几个部分组成:

  • schema:Android固定设置为 content://
  • Authority:用于唯一标识这个ContentProvider,外部调用者可以根据这个标识找到它。
  • path:要操作的数据库表。
  • id:可选字段,用于操作特定的数据项。

例如:content://com.trampcr.contacts/people/5 这个Uri的意思是访问contacts数据中id为5的记录。

将字符串转换成Uri: Uri uri = Uri.parse("content://com.trampcr.contacts/people/5");

三.ContentResolver操作数据


ContentProvider的作用是暴露可供操作的数据,其他应用程序通过ContentResolver操作ContentProvider所暴露的数据。

首先获取ContentResolver对象: getContentResolver():获取应用默认的ContentResolver。

接下来通过ContentResolver对象操作数据:

  • insert():向Uri对应的ContentProvider中插入values对应的数据。
  • delete():删除Uri对应的ContentProvider中selection条件所匹配的数据。
  • update():更新Uri对应的ContentProvider中selection条件所匹配的数据。
  • query():查询Uri对应的ContentProvider中selection条件所匹配的数据。

ContentResolver与ContentProvider的关系如下图:

ContentResolver与ContentProvider的关系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016.08.22 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
android100 自定义内容提供者
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/154726.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/07
3360
Android四大组件之ContentProvider
Android四大组件之ContentProvider ContentProvider 安卓应用程序默认是无法获取到其他程序的数据,这是安卓安全学的基石(沙盒原理)。但是经常我们需要给其他应用
xiangzhihong
2018/01/26
1K0
Android学习_ContentProvider和Uri
Android的ContentProvider作用就是在应用程序之间交换数据,假设我们採用文件共享的方式须要注意的是必须採用特定的数据訪问方式。而ContentProvider是不同应用程序之间进行数据交换的标准API。ContentProvider以某种Uri的形式对外提供数据,而其它应用使用ContentResolver依据Uri去訪问操作指定数据。
全栈程序员站长
2022/07/10
4680
Android点将台:济世儒侠[-ContentProvider-]
张风捷特烈
2024/02/09
2130
Android点将台:济世儒侠[-ContentProvider-]
Android ContentProvider实例详解
ContentProvider(内容提供者)是Android的四大组件之一,管理android以结构化方式存放的数据,以相对安全的方式封装数据(表)并且提供简易的处理机制和统一的访问接口供其他程序调用。  Android的数据存储方式总共有五种,分别是:Shared Preferences、网络存储、文件存储、外储存储、SQLite。但一般这些存储都只是在单独的一个应用程序之中达到一个数据的共享,有时候我们需要操作其他应用程序的一些数据,就会用到ContentProvider。而且Android为常见的一些数据提供了默认的ContentProvider(包括音频、视频、图片和通讯录等)。
Android技术干货分享
2019/05/07
2.4K0
Android ContentProvider实例详解
ContentProvider
ContentProvider 内容提供者,应用程序间的数据交互,是为存储和获取数据提供的统一接口。 Contentprovider为应用间数据交互提供了安全的环境,它允许把自己的应用数据开放给其他应用进行 CRUD。怎么样进行操作可以自己规定,不用担心权限的问题。 当然如果不想被被人读取自己应用的数据就不需要这个内容提供者。 ContentResolver来访问和操作我们的数据。 ContentResolver 通过我们注册的uri就可以找到我们开放的数据。 关于uri 参考这篇文章:http://b
佛系编码
2018/05/22
6740
Android ContentProvider_1 使用方法
ContentProvider 是进程间内容共享的统一接口。注意:ContentProvider 的作用不是实现进程间通信,它只是为进程间通信提供了一套统一接口,真正实现进程间通信的是底层的 Binder 机制。
大公爵
2022/11/07
6910
Android ContentProvider_1 使用方法
安卓基础干货(九):安卓内容提供者的学习
ContentProvider 在android中的作用是对外共享数据,也就是说你可以通过ContentProvider把应用中的数据共享给其他应用访问,其他应用可以通过ContentProvider 对你应用中的数据进行添删改查。关于数据共享,以前我们学习过文件操作模式,知道通过指定文件的操作模式为Context.MODE_WORLD_READABLE 或Context.MODE_WORLD_WRITEABLE同样也可以对外共享数据。那么,这里为何要使用ContentProvider 对外共享数据呢?是这样的,如果采用文件操作模式对外共享数据,数据的访问方式会因数据存储的方式而不同,导致数据的访问方式无法统一,如:采用xml文件对外共享数据,需要进行xml解析才能读取数据;采用sharedpreferences共享数据,需要使用sharedpreferences API读取数据。 使用ContentProvider对外共享数据的好处是统一了数据的访问方式。
緣來
2018/09/18
1.7K0
【Android从零单排系列四十一】《Android数据存储方式-ContentProvider》
小伙伴们,在上文中我们介绍了Android数据存储中的SharedPreference,本文我们继续盘点介绍Android开发中的另一个数据存储方式ContentProvider。
再见孙悟空_
2023/07/17
2950
android学习笔记----内容提供者
内容提供器(Content Provider)主要用于在不同的应用程序之间实现数据共享的功能,它提供了一套完整的机制,允许一个程序访问另一个程序中的数据,同时还能保证被访问数据的安全性。目前,使用内容提供器是android实现跨程序共享数据的标准方式。
砖业洋__
2023/05/06
4430
android学习笔记----内容提供者
Android必知必会的四大组件--ContentProvider
作为四大组件之一,它的地位绝对不容许轻视的。但是我们在哪里有用到过他呢?其实很多场景都有,比如说你在使用app时,是不是经常的会询问你是否开启通讯录的访问,如果你同意了,这个时候ContentProvider就发挥了他的作用。
ClericYi
2020/06/23
5410
Android中的跨进程通信方法实例及特点分析(二):ContentProvider
在Android中有些数据(如通讯录、音频、视频文件等)是要供非常多应用程序使用的。为了更好地对外提供数据,Android系统给我们提供了Content Provider使用,通过它能够訪问上面所说的数据。比如非常多音乐播放器中的扫描功能事实上就用到了Content Provider功能(当然,也有的播放器是自己去实现更底层的功能)。
全栈程序员站长
2022/07/07
7460
Android中的跨进程通信方法实例及特点分析(二):ContentProvider
Android 进阶11:进程通信之 ContentProvider 内容提供者
学习启舰大神,每篇文章写一句励志的话,与大家共勉。 When you are content to be simply yourself and don’t compare or compete,
张拭心 shixinzhang
2018/01/05
2.7K0
Android 进阶11:进程通信之 ContentProvider 内容提供者
Android 这 13 道 ContentProvider 面试题,你都会了吗?
前言 ---- 作为 Android 的四大组件之一,ContentProvider 可以说是无处不在了。 但是对于我而言,开发过程中看似 ContentProvider 用得很娴熟,却一直没能形成一个完整的体系。 也许大家也有着和我类似的烦恼,于是我特地花了几天的时间,总结了我所知道的知识点,以及面试中可能遇到的问题。将本文分享给大家,希望能帮助大家重新梳理下我们的这个老朋友 ContentProvider 。 最后,希望大家阅读愉快! 文章目录 ContentProvider 应用程序间非常通
圆号本昊
2021/09/24
9510
Android 这 13 道 ContentProvider 面试题,你都会了吗?
Android数据存储实现的5大方式
第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity
用户2192970
2019/02/21
3.5K0
Android数据存储实现的5大方式
ContentProvider初探
其实很多时候我们用到ContentProvider并不是自己暴露自己的数据,更多的时候通过 ContentResolver来读取其他应用的信息,最常用的莫过于读取系统APP,信息,联系人, 多媒体信息等!如果你想来调用这些ContentProvider就需要自行查阅相关的API资料了! 另外,不同的版本,可能对应着不同的URL!这里给出如何获取URL与对应的数据库表的字段, 这里以最常用的联系人为例,其他自行google~
小小工匠
2021/08/16
5370
Android四大组件之ContentProvider
Hi,大家好,我们又双叒叕见面啦,为了让大家快速的学习Android知识,我们每天都在更新文章,相信小伙伴们已经开始眼熟我们了!这一期我们讲解ContentProvider(内容提供者)相关知识,他也是我们近期更新的Android四大组件中最后一个。话不多说,让我们赶紧开始学习吧~
下码看花
2019/09/02
6570
Android四大组件之ContentProvider
Android:关于ContentProvider的知识都在这里了!
4.2.2 MIME类型组成 每种MIME类型 由2部分组成 = 类型 + 子类型
Carson.Ho
2019/02/22
2.5K0
Android数据存储实现的5大方式
Android数据存储实现的5大方式 数据存储在开发中是使用最频繁的,在这里主要介绍Android平台中实现数据存储的5种方式,更加系统详细的介绍了5种存储的方法和异同。 第一种: 使用SharedPreferences存储数据 SharedPreferences是Android平台上一个轻量级的存储类,主要是保存一些常用的配置比如窗口状态,一般在Activity中 重载窗口状态onSaveInstanceState保存一般使用SharedPreferences完成,它提供了Android平台常规的Lon
用户1289394
2018/02/26
6.8K0
Android数据存储实现的5大方式
android数据对外共享的方式----contentProvider
这content provider统一了各种存储方式的方法,屏蔽了操作细节,文件或数据库将其封装成contentProvider后,读写操作方法就统一了,不需要关心其存储的差异。
用户4148957
2022/06/14
7250
推荐阅读
相关推荐
android100 自定义内容提供者
更多 >
领券
社区富文本编辑器全新改版!诚邀体验~
全新交互,全新视觉,新增快捷键、悬浮工具栏、高亮块等功能并同时优化现有功能,全面提升创作效率和体验
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文