Android四大组件之——ContentProvider(一)


本人邮箱:JohnTsai.Work@gmail.com,欢迎交流讨论。
欢迎转载,转载请注明网址:http://www.cnblogs.com/JohnTsai
个人博客地址:http://johntsaiandroid.github.io


目录


1.ContentProvider

相信大家都知道大名鼎鼎的ContentProvider,作为Android四大组件之一,和ActivityServiceBroadcastReceiver齐名。
今天就和大家一起来学习一下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(一)的更多相关文章

  1. Android 四大组件之" ContentProvider "

    前言 ContentProvider作为Android的四大组件之一,是属于需要掌握的基础知识,可能在我们的应用中,对于Activity和Service这两个组件用的很常见,了解的也很多,但是对Con ...

  2. 【Android开发日记】之入门篇(九)——Android四大组件之ContentProvider

    数据源组件ContentProvider与其他组件不同,数据源组件并不包括特定的功能逻辑.它只是负责为应用提供数据访问的接口.Android内置的许多数据都是使用ContentProvider形式,供 ...

  3. 初学android:四大组件之contentprovider

    一.ContentProvider的概念ContentProvider:为存储和获取数据提供统一的接口.可以在不同的应用程序之间共享数据.Android已经为常见的一些数据提供了默认的ContentP ...

  4. Android四大组件之contentProvider

    Activity,Service,broadcast and Contentprovider android 4 大组件. ContentProvider:使用: public class Image ...

  5. android四大组件之ContentProvider(一)

    ContentProvider学习笔记 1. ContentProvider基本概念 ContentProvider向我们提供了我们在应用程序之间共享数据的一种机制,虽然采用文件和SharedPref ...

  6. Android 四大组件之四(ContentProvider)

    ContentProvider调用关系: ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法. ContentProvider可以指定需要共 ...

  7. android四大组件之ContentProvider(二)

    ContentProvider学习笔记 上一章节我们编写了自定义的一个StudentProvider,他提供了两种供外界访问数据的方式,content://come.demo.sqlite.stude ...

  8. Android四大组件之contentProvider(续)

    1.content provider与网页有何相似之处? contentProvider使用authority 同网站的域名类似 contentProvider还可以提供类似于网站的索引方式      ...

  9. [Android]Android四大组件之ContentProvider

    URI简介 URI(Universal Resource Identifier),又被称为"通用资源标志符". URI由许多部分所组成,示例及解说如下: Content URIs介 ...

随机推荐

  1. iOS友盟社会化分享U-Share分享面板不显示的问题(基本配置没有错误)

    //要先是window可视化 [self.window makeKeyAndVisible]; //添加友盟分享[[UMSocialManager defaultManager] openLog:YE ...

  2. python read file(f,csv)

    import csv def readfile0(): print('test read file') in_file = open('C:\python\demo\LiaoXueFeng\data\ ...

  3. [转]快速搞懂Gson的用法

    原文地址:http://coladesign.cn/fast-understand-the-usage-of-gson/ 谷歌gson这个Java类库可以把Java对象转换成JSON,也可以把JSON ...

  4. C# DIctionary:集合已修改,可能无法执行枚举操作

    C#中直接对集合Dictionary进行遍历并修改其中的值,会报错,如下代码就会报错:集合已修改;可能无法执行枚举操作.代码如下 public void ForeachDic() { Dictiona ...

  5. AJAX 简单例程示例

    index.html <html> <head> <script> function showHint(str) { if (str.length==0) { re ...

  6. 搭建自己的挂Q平台

    准备工作: 在前篇[分享]免费建立自己的站点里面介绍了怎么申请免费域名和空间. 在这里[随记]Q号解除限制一波三折有我被挂Q工具坑苦的经历. 在网上(出处不明了,下载的包太多,非CSDN)下载到的免费 ...

  7. Spring Cloud Config 配置刷新

    客户端进行刷新操作. 1.添加 actuator包,这样 /refresh url才处于可用状态. <dependency> <groupId>org.springframew ...

  8. 配置文件报错:不允许有匹配 [xX][mM][lL] 的处理指令目标。

    http://www.68idc.cn/help/buildlang/ask/20150108163110.html ————————————————————————————————————————— ...

  9. js学习(四)- prototype原型对象

    前言: 下面两行代码都是创建一个数组对象myArray:var myArray=[];//等价于var myArray=new Array();同样,下面的两段代码也都是创建一个函数myFunctio ...

  10. 树莓派3 U盘启动 配置 & 即 MSD启动 总结

    树莓派3添加了一个新特性:允许USB启动.现在我们既可以从SD卡启动,也可以从USB启动.USB设备可以是U盘,带USB适配器的SSD硬盘,甚至是移动硬盘. 本文介绍怎么从U盘启动树莓派3.   1. ...