Android四大组件之——ContentProvider(一)
Android四大组件之——ContentProvider(一)
本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论。
欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai
个人博客地址:http://johntsaiandroid.github.io
目录
- 1.ContentProvider
* 1.1ContentProvider简介
* 1.2为什么有ContentProvider
* 1.3Android官方的ContentProvider - 2.Content URI
1.ContentProvider
相信大家都知道大名鼎鼎的ContentProvider,作为Android四大组件之一,和Activity、Service、BroadcastReceiver齐名。
今天就和大家一起来学习一下ContentProvider。
1.1ContentProvider简介
Android开发者文档这么说的:
Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security.
Content Providers管理对有结构的数据集的访问。它们封装数据,提供了定义数据安全的机制。
这个说法似乎太官方了,不好理解。究竟ContentProvider是怎样管理,封装数据呢?又是怎样保证数据安全的?
通俗的说,ContentProvider是一种数据包装器。它提供统一的接口对数据进行操作,使用者不用关心数据到底是如何存储的以及数据类型到底是什么。ContentProvider将数据封装好了,这样就能方便的管理数据了。它主要用于不同应用间,不同进程间的信息的共享。

1.2为什么有ContentProvider?
大家都知道,涉及到数据的访问就要考虑到数据的安全性。怎样在保证数据的安全性的同时,又能方便的访问数据呢?
众所周知,Android系统是基于Linux内核的。在Linux中,文件具有如下图中的一系列属性,如文件权限。不同的用户或用户组对文件有不同的读写,执行的权限。如图中的r(Read),w(Write),x(Execute),-(无权限)。

Android是基于Linux的,也继承了Linux的文件管理方式,通常每个应用都是独立的进程,也就是不同的用户。Android为每个应用程序分配了独立的用户ID和用户组ID。并且由这个应用程序创建出来的文件被赋予了相应的读写权限。其他应用程序无权访问。

这样就保证了数据的安全性,但是这对数据的共享给第三方造成了不便。Android系统的开发者为了解决了这个问题,设计了ContentProvider类。Content Provider很好的兼顾了二者。
1.3Android官方的ContentProvider
Android官方为了便于第三方开发者开发,提供了一些ContentProvider。这些标准的Provider都定义在了android.provider中。

2.Content URI
在了解Content URI之前,先了解下URI.
URI:通用资源标识符(Uniform Resource Identifier, 简称"URI")主要用于Web上可用的每种资源 -HTML文档、图像、视频片段、程序等 - 进行定位。
Android上的资源也可以用URI表示。

文档中是这么描述URI的:
A content URI is a URI that identifies data in a provider. Content URIs include the symbolic name entire provider (its authority) and a name that points to a table (a path).
Content URI由三部分组成:"content://"、主机名(或理解为域名authority)、path(路径,其中id可选)。
例如:
用户字典的单词表:
content://user_dictionary/word
设备上存储的所有图片:
content://media/internal/images
联系人信息:
content://contacts/people
某个人的联系人信息:
content://contacts/people/1
使用URI的parse方法将字符串转换为Uri:
<Uri uri = Uri.parse("content://com.ijtsai.contactprovider/people");>
Android四大组件之——ContentProvider(一)的更多相关文章
- Android 四大组件之" ContentProvider "
前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...
- 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider
数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供 ...
- 初学android:四大组件之contentprovider
一.ContentProvider的概念ContentProvider:为存储和获取数据提供统一的接口.可以在不同的应用程序之间共享数据.Android已经为常见的一些数据提供了默认的ContentP ...
- Android四大组件之contentProvider
Activity,Service,broadcast and Contentprovider android 4 大组件. ContentProvider:使用: public class Image ...
- android四大组件之ContentProvider(一)
ContentProvider学习笔记 1. ContentProvider基本概念 ContentProvider向我们提供了我们在应用程序之间共享数据的一种机制,虽然采用文件和SharedPref ...
- Android 四大组件之四(ContentProvider)
ContentProvider调用关系: ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法. ContentProvider可以指定需要共 ...
- android四大组件之ContentProvider(二)
ContentProvider学习笔记 上一章节我们编写了自定义的一个StudentProvider,他提供了两种供外界访问数据的方式,content://come.demo.sqlite.stude ...
- Android四大组件之contentProvider(续)
1.content provider与网页有何相似之处? contentProvider使用authority 同网站的域名类似 contentProvider还可以提供类似于网站的索引方式 ...
- [Android]Android四大组件之ContentProvider
URI简介 URI(Universal Resource Identifier),又被称为"通用资源标志符". URI由许多部分所组成,示例及解说如下: Content URIs介 ...
随机推荐
- [转]PLSQL Developer软件使用大全
原文地址:https://www.cnblogs.com/lhrbest/p/6493218.html 第一章 PLSQL Developer特性 PL/SQL Developer是一个集成开发环境, ...
- [转]cron表达式详解
原文地址:https://www.cnblogs.com/linjiqin/archive/2013/07/08/3178452.html Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6 ...
- 引用Interop.SQLDMO.dll后的注意事项。
SQLDMO.dll是个好东西,ASP.NET利用它可以实现在线备份.还原数据库等各种功能.近日有客户要求为其在后台添加一个管理数据库的功能.于是就出现了这篇文章. 由于客户的数据库和WEB服 ...
- 【.Net】exe加密/加壳工具.Net Reactor
用WPF开发的桌面应用,编译后得到的项目启动项exe文件是未加密的,使用ILSpy等反编译工具能够直接看到该exe内的文件源码! 如下图: 可以使用.Net Reactor(有破/解版)等工具对exe ...
- html绝对路径与相对路径
文件,图片和html文档同一个目录的直接写文件名即可(相对路径). 工作中一般使用相对路径,项目放到服务器上部署不能保证绝对路径不出错.
- <要做股市赢家:杨百万>读书笔记
书在这里 和这里: 要注意的是,并不是政府每出台一个政策股价就要变.如果听到各种消息,市场却没有反应,就不要去做这个聪明人.有消息后应该密切关注市场反应,看成交量.价格的变化等等,再作决定.总之,关键 ...
- Linux:ssh端口转发详解
ssh是个多用途的工具,不仅可以远程登录,还可以搭建socks代理.进行内网穿透,这是利用它的端口转发功能来实现的. 所谓ssh端口转发,就是在ssh连接的基础上,指定 ssh client 或 ss ...
- ansible示例,离线安装etcd
一.基础介绍 ========================================================================================== 1. ...
- UI设计 - 首页(主页)的任务
什么是首页 首页,又可以叫主页,是我们的网站或者APP的主要页面,它是我们接触的第一个页面(如果不包含闪屏页和登陆页的话). 特点 首页是一个开始的地方,我们开始真正接触网站提供给我们的内容. 首页是 ...
- Nodejs中export的作用
在上一节,我们编写了一个hello.js文件,这个hello.js文件就是一个模块,模块的名字就是文件名(去掉.js后缀),所以hello.js文件就是名为hello的模块. 我们把hello.js改 ...