Android学习(四)——四大组件之ContentProvider

第一章 四大组件 之 ContentProvider(三) 第一章 四大组件 第三组件 Content Provider (一)定义 内容提供者 (二)作用 实现各个app应用/进程间进行数据交互&共享(跨进程通信) ContentProvider=中间者角色(搬运工),真正存储&操作数据的数据源为原来存储数据的方式(数据库(sqlite)、文件、XML、网络等等) ContentProvider一般为存储和获取数据提供统一的接口,可以在不... 阅读详情

ContentProvider的基础使用

ContentProvider是什么

ContentProvider, 内容提供者,它管理Android以,结构化方式存放的数据,它以相对安全的方式封装数据并且提供简易的处理机制。ContentProvider提供不同进程间数据交互的标准化接口,是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法。

  • ContentProvider可以指定需要共享的数据,而其他应用程序则可以在不知道数据来源、路径的情况下,对共享数据进行增删改查等操作
  • 在Android系统中,许多Android系统内置的数据也是通过ContentProvider提供给用户使用,例如通讯录、音视频文件和图像文件等

ContentProvider,Uri,ContentResolver

ContentProvider是允许不同应用进行数据交换的标准的API,ContentProvider以Uri的形式对外提供数据的访问操作接口,而其他应用则通过ContentResolver根据Uri去访问指定的数据。

一旦某个应用通过ContentProvider暴露了自己的数据接口,那么不管该应用程序是否启动,其他程序都可以通过该接口来操作自己的数据接口来操作其内部的数据,包括增加数据,删除数据,修改数据,查询数据等.

Uri——通用资源标识符(Uniform Resource Identifier)

是一个用于标识某一互联网资源名称的字符串 该种标识允许用户对任何(包括本地和互联网)的资源通过特定的协议进行交互操作。URI由包括确定语法和相关协议的方案所定义

Uri由三个部分:访问资源的命名机制(ContentProvider的默认为content)、存放资源的主机名、资源自身的名称组成,使用的URI语法结构如下:

content://<authority>/<data_path>/<id>
  • content:// 使用的是content协议,属于默认规定
  • < authority > 是授权者名称,用来确定具体由哪一个ContentProvider提供资源,通常是类的小写,以确保资源授权者的唯一性。
  • < data_path > 是数据路径,用来确定请求的是哪个数据集。
  • < id > 是数据编号,用来唯一确定数据集中的一条记录,匹配数据集中_ID字段的值(如果请求的数据不只一条,< id >可以省略)。

ContentProvider的使用离不开Uri类的支持,在自己的继承类中使用UriMatcher,根据UriMatcher.match(Uri uri)返回的表示符,进行不同范围,不同数据集的操作。

ContentResolver(内容解析器)

外界的程序通过ContentResolver可以访问ContentProvider提供的数据;

一旦定义好自己的ContentProvider类,就可以使用ContentResolver进行访问操作了。ContentResolver类的方法都会在其内部调用URI主机部分确定的ContentProvider,ContentProvider实现了底层数据的增,删,查,改的功能.

使用:

 Cursor cs = getContentResolver().query();

具体操作与数据库query方法相同

系统常用Uri

android系统管理联系人的URI如下:
ContactsContract.Contacts.CONTENT_URI 管理联系人的Uri
ContactsContract.CommonDataKinds.Phone.CONTENT_URI 管理联系人的电话的Uri
ContactsContract.CommonDataKinds.Email.CONTENT_URI 管理联系人的Email的Uri

(注:Contacts有两个表,分别是rawContact和Data,rawContact记录了用户的id和name,data表中有Email的信息)

  • 其中id栏名称为:ContactsContract.Contacts._ID
  • name名称栏为ContactContract.Contracts.DISPLAY_NAME
  • 电话信息表的外键id为ContactsContract.CommonDataKinds.Phone.CONTACT_ID
  • 电话号码栏名称为:ContactsContract.CommonDataKinds.Phone.NUMBER..

  • Email地址栏名称为:ContactsContract.CommonDataKinds.Email.DATA

  • 其外键栏为:ContactsContract.CommonDataKinds.Email.CONTACT_ID

android为多媒体提供的ContentProvider的Uri如下:
MediaStore.Audio.Media.EXTERNAL_CONTENT_URI 存储在sd卡上的音频文件
MediaStore.Audio.Media.INTERNAL_CONTENT_URI 存储在手机内部存储器上的音频文件

MediaStore.Audio.Images.EXTERNAL_CONTENT_URI SD卡上的图片文件内容
MediaStore.Audio.Images.INTERNAL_CONTENT_URI 手机内部存储器上的图片
MediaStore.Audio.Video.EXTERNAL_CONTENT_URI SD卡上的视频
MediaStore.Audio.Video.INTERNAL_CONTENT_URI 手机内部存储器上的视频

短信URI: Content://sms

发送箱中的短信URI: Content://sms/outbox

(相应栏名称address, subject(标题), time)

最后记得在AndroidManifest.xml声明读写权限:

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />

自定义ContentProvider

这个我暂时还没用过,等我用过了我再补上

LDPC码译码原理——概率公式推导 怎么说呢,一直以来都想写一下博客。近半年多来我一直在学习LDPC码译码上的东西,主要是在FPGA实现上的,所以这次想写一些关于这方面的内容,包括译码的原理、仿真以及实现。(当然是基于准循环LDPC码上实现的)不过呢,我写这个的初衷是为了让初学者理解入门用的,而不是在大牛面前班门弄斧,有错误之处欢迎大家批评指正。不知道会不会有人一开始像我一样,为了学好LDPC码,先去好好了解其它的诸如RS码或者是卷... 阅读详情

相关推荐

实战指南:UOS专业版命令行高效下载离线安装包及依赖

本文提供了一份UOS专业版离线安装包的实战下载指南。针对无外网环境下的软件部署难题,详细介绍了如何通过命令行精准获取软件包名,并利用`apt download`命令高效下载主程序及其所有依赖。文章重点解析了使用`apt install --dry-run`模拟安装来完整获取依赖包的方法,并给出了离线安装、问题排查及自动化脚本编写等高级技巧,帮助管理员和运维人员实现可靠的批量离线部署。

honey的博客 1110

Android Provider用法

ContentProviderContentProvider一般为存储和获取数据提供统一的接口,可以在不同的应用程序之间共享数据。之所以使用ContentProvider,主要有以下几个理由:1,ContentProvider提供了对底层数据存储方式的抽象。比如下图中,底层使用了SQLite数据库,在用了ContentProvider封装后,即使你把数据库换成MongoDB,也不会对上层数据使用层...

forwardto9的专栏 4万+

深入浅出:CosineLRScheduler 调度器的原理与实战应用

本文深入解析了CosineLRScheduler调度器的核心原理与实战应用,详细介绍了余弦退火算法及其在深度学习模型训练中的优势。通过参数配置建议、PyTorch实现示例和常见问题解决方案,帮助开发者高效应用该调度器提升模型性能,特别适用于计算机视觉和自然语言处理任务。

sss66的博客 859

Android学习笔记(3)————Android四大组件之三(Content Provider)(代码示例待补全)...

/******************************************************************************************** * author:conowen@大钟 * E-mail:conowen@hotmail.com ...

byebyegov5qq 174

Jetson Nano摄像头选型与配置全攻略:CSI与USB接口实战指南

在嵌入式视觉与边缘计算项目中,摄像头作为核心传感器,其选型与配置直接影响系统性能。CSI(Camera Serial Interface)和USB(Universal Serial Bus)是两种主流接口,前者通过MIPI CSI-2协议直接与SoC通信,具备低延迟、高带宽特性,适合实时性要求高的应用;后者基于通用串行总线标准,即插即用,通用性强。在NVIDIA Jetson Nano平台上,合理选择摄像头接口并优化驱动配置,能充分发挥其GPU加速优势,提升图像处理流水线效率。本文聚焦Jetson Nano

weixin_29190651的博客 323

基于BQ24610的24V电池充电板

转自我的博客 本文的主要目的在于传播基本的阅读datasheet的能力,以及PCB设计需要注意的基本问题。 本次需要设计的是24V动力锂电池充电电路。 原理图设计 参考官方参考电路 为了快速设计电路,自然是参考官方参考电路,选择Typical Application。 做细微的参数调整 由于我们的需求是给24V的电池充电,所以需要稍微修改一下原理图,接下来需...

greedyhao的博客 1万+

ContentProvider使用简介

原文出处:http://www.ccbu.cc/index.php/android/android-contentprovider.html ContentProvider中文名“内容提供者”,是Android系统不同应用程序之间进行数据交换的标准API,ContentProvide以Uri的形式对外提供数据,允许其他应用访问和修改数据;其他应用使用ContentResolve根据Uri进行访问操作指定的数据。Android内置的许多数据也都是使用ContentProvider形式,供开发者调用的;如视频,

^_虫虫_^的专栏 514

Ubuntu22.04 网络图标消失与连接故障排查指南(附实战修复流程)

本文详细介绍了Ubuntu22.04系统中网络图标消失与连接故障的排查与修复方法。通过ifconfig、dhclient等命令诊断问题,提供从紧急恢复网络连接到深度排查的完整解决方案,帮助用户快速恢复网络功能并预防类似问题再次发生。

weixin_28481133的博客 287

Android应用程序组件Content Provider简要介绍和学习计划

在Android系统中,Content Provider作为应用程序四大组件之一,它起到在应用程序之间共享数据的作用,同时,它还是标准的数据访问接口。前面的一系列文章已经分析过Android应用程序的其它三大组件(Activity、Service和Broadcast Receiver)了,本文将简要介绍Content Provider组件在Android应用程序设计中的地位,为进一步学习打好...

编程代码大全 289

PS2硬盘启动终极指南:从FMCB到OPL,告别光驱打造游戏博物馆

在计算机存储与数据读取领域,硬盘启动技术通过将操作系统或应用程序从本地硬盘直接加载,绕过了传统光驱等外部介质,实现了速度与可靠性的双重提升。其核心原理在于利用引导程序接管系统初始化流程,直接访问硬盘上的特定分区与文件镜像。这项技术的价值在于极大提升了数据读取效率、降低了物理介质损耗,并扩展了存储容量与管理的灵活性。在怀旧游戏硬件改造、嵌入式系统定制等场景中,硬盘启动技术被广泛应用,以实现老旧设备的功能焕新与性能优化。本文聚焦于索尼PS2游戏主机的硬盘启动方案,深入探讨了如何利用FMCB(Free MCBoo

weixin_34295316的博客 1778

EXCEL VBA从入门到精通 第一章:VBA入门

在VBA中,需要使用关键字Dim来定义一个变量,后面跟上变量名和变量的数据类型。例如,下面的代码定义了一个整型变量x和一个字符串变量name在VBA中,使用关键字Const来定义常量,后面跟上常量名和常量的值。例如,下面的代码定义了一个整型常量MAX_NUM和一个字符串常量MESSAGE需要注意的是,常量一旦被定义,其值就不能被改变。

1万+

Android四大基本组件——Content Provider

ContentProvider:使一个应用程序的指定数据集提供给其他应用程序使用。这些数据可以存储在文件系统中、在一个SQLite数据库、或以任何其他合理的方式。 其他应用可以通过ContentResolver类从该内容提供者中获取或存入数据.(相当于在应用外包了一层壳)。只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据被多个应用程序使用,且必须存储在一个内容提供者中。 它

SparkYuan 1066

数据预处理

数据预处理 数据预处理(数据清洗)是数据挖掘过程中的重要一步,它主要包括数据清洗,数据集成,数据变换和数据规约。 在我们进行数据挖掘的过程中,大量的原始数据中存在着大量有问题的数据(脏数据)比如有缺失值的,不一致的,有异常的,大量重复的数据等。这些脏数据会严重影响到数据挖掘建模过程的执行效率,也可能会使挖掘结果产生偏差。通过数据预处理(数据清洗)可以提高数据的质量,更好的适应特定的挖掘技术及工具。...

CJW的博客 9929

android四大组件简述之contentprovider,Android 四大组件学习之ContentProvider四

上节我们学习了怎样去读取系统短信以及插入一条短信到系统中。 本节我们学习怎样获取系统的联系人,以及插入一条联系人好。废话不多说了,直接操作。首先和读取短信一样,先找到联系人在数据库中的位置。watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gr...

weixin_42322512的博客 709

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

Android 四大组件学习之ContentProvider四

上节我们学习了如何去读取系统短信以及插入一条短信到系统中。 本节我们学习如何获取系统的联系人,以及插入一条联系人 好,废话不多说了,直接操作。 首先和读取短信一样,先找到联系人在数据库中的位置。 然后导出,查看数据库中的内容 上图就是如何到数据库中找打系统的联系人数据,(看起来图画的有点乱,希望能看懂吧) 既然知道如何能到系统的数据库找到数据,那我们就开始写代码实现吧: pub

半月旋空 1277

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

安卓四大组件之ContentProvider

安卓四大组件之ContentProvider

似霰的博客 5939

【Android】四大组件之ContentProvider

ContentProvider就是用来共享和管理数据的组件。

贫道绝缘子的博客 3439

安卓开发-03-四大组件

Android开发的四大组件

ning_xiao_xuan的博客 4798

【Android】安卓四大组件之ContentProvider知识总结

统一资源标识符(URI)是一种用于标识资源的字符串。它可以是一个网址、文件路径、或其他形式的资源定位符。在Android中,URI通常用于访问内容提供者(Content Provider)提供的数据。获取设备上存储的所有图片获取设备上所有联系人信息获取ID为45的单个联系人信息在Java中,可以通过Uri.parse方法将字符串URI转换为Uri对象。

Patrick_yuxuan的博客 2454

安卓四大组件之一——ContentProvider

使用安卓四大组件之一——contentprovider的方法类进行数据获取及两个app之间的程序调用

qq_53850212的博客 1436

Android四大组件详解

Android四大组件详解 文章目录Android四大组件详解四大组件的不同点一、Activity二、Service三、Broadcast Receiver四、Content Provider四大组件相同点4大组件的注册4大组件的激活4大组件的关闭android中的任务(activity栈) Android四大组件分别是活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供器(Content Provider)。 活动(activity)是所有A

爱笑的博客 1万+

android authorities 获取_Android四大组件之ContentProvider

前言Hi,大家好,我们又双叒叕见面啦,为了让大家快速的学习Android知识,我们每天都在更新文章,相信小伙伴们已经开始眼熟我们了!这一期我们讲解ContentProvider(内容提供者)相关知识,他也是我们近期更新的Android四大组件中最后一个。话不多说,让我们赶紧开始学习吧~简介ContentProvider是Android系统中为开发者专门提供的不同应用间进行数据共享的组件,其提供了一...

weixin_29022115的博客 3500

【Android】四大组件之 ContentProvider

前言 ContentProvider 是 Android 的四大组件之一,有时候我们需要操作其他应用程序的一些数据,就会用到 ContentProvider。 ContentProvider 用于管理 Android 以结构化方式存放的数据,以相对安全的方式封装数据并提供简易的处理机制和统一的访问接口供其他程序调用。 Android 为常见的一些数据提供了默认的 ContentProvider(包括音频、视频、图片和通讯录等)。 要实现与其他的 ContentProvider 通信首先要查找到对应的 Co

yang553566463的博客 3105
上一篇: Android学习(三)——四大组件之BroadcastReceiver
下一篇: Android学习(五)——Fragment
豪利丶王
博客等级 码龄11年 1粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值