今天我们来介绍Android的四大基本组件之一的ContentProvider,首先我们来看一下,现在比较流行的被大多说人接受的解释:
ContentProvider(数据提供者)是应用程序之间共享数据的一种接口机制,是一种更为高级的数据共享方法。在Android系统中,许多Android系统内置的数据也是通过ContentProvider提供给用户使用,例如通讯录、音视频文件和图像文件等ContentProvider可以指定需要共享的数据,而其他应用程序则可以在不知道数据来源、路径的情况下,对共享数据进行增删改查等操作。
今天我们只是做一个简单地介绍:
下面我们来看一下ContentProvider的机制原理:
在这里我们有必要介绍一下MIME文件类型: 多功能Internet 邮件扩充服务(Multipurpose Internet Mail Extensions),它是一种多用途网际邮件扩充协议,在1992年最早应用于电子邮件系统,但后来也应用到浏览器。MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式
在我们学习ContentProvider时,我们需要了解到mime数据类型,当我们在创建自己的ContentProvider时,我们需要继承父类,并且实现相对应的方法
1.query(Uri, String[], String, String[], String) which returns data to the caller
2.insert(Uri, ContentValues) which inserts new data into the content provider
3.update(Uri, ContentValues, String, String[]) which updates existing data in the content provider
4.delete(Uri, String, String[]) which deletes data from the content provider
5.getType(Uri) which returns the MIME type of data in the content provider
我们来看最后一个方法,返回的是一个mime类型: MIME类型就是设定某种扩展名的文件用一种应用程序来打开的方式类型,当该扩展名文件被访问的时候,浏览器会自动使用指定应用程序来打开。多用于指定一些客户端自定义的文件名,以及一些媒体文件打开方式。
ContentResolver是通过ContentProvider来获取其他与应用程序共享的数据,那么ContentResolver与ContentProvider的接口应该差不多的。其中ContentProvider负责组织应用程序的数据;向其他应用程序提供数据;ContentResolver则负责获取ContentProvider提供的数据;修改/添加/删除更新数据等;
一个应用程序可以创建自己的数据,这个数据对该应用程序来说是私有的,外界更本看不到,也不知道数据是如何 存储的,或者是使用数据库还是使用文件,还是通过网上获得,这些一切都不重要,重要的是外界可以通过这一套标准及统一的接口和这个程序里的数据打交道,例 如:添加(insert)、删除(delete)、查询(query)、修改(update)。Android为我们提供了ContentProvider来实现数据的共享,一个程序如果想让别的程序可以操作自己的数据,就定义自己的 ContentProvider,然后在AndroidManifest.xml中注册,其他application可以通过获取 ContentResolver通过Uri来操作上一程序的数据。
这一次我们只是简单地对ContentProvider做一个介绍,下一次,我们将用一个demo向大家详细的介绍,经验总结,来之不易,希望大家多多支持.