Android开发者文档这么说的:
Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security.
通俗的说,ContentProvider是一种数据包装器。它提供统一的接口对数据进行操作,使用者不用关心数据到底是如何存储的以及数据类型到底是什么。ContentProvider将数据封装好了,这样就能方便的管理数据了。它主要用于不同应用间,不同进程间的信息的共享
为什么有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");>
http://www.cnblogs.com/JohnTsai/p/4034062.html