《Android程序设计教程》课件第八章 ContentProvider数据共享_第1页
《Android程序设计教程》课件第八章 ContentProvider数据共享_第2页
《Android程序设计教程》课件第八章 ContentProvider数据共享_第3页
《Android程序设计教程》课件第八章 ContentProvider数据共享_第4页
《Android程序设计教程》课件第八章 ContentProvider数据共享_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第八章ContentProvider数据共享目录8.1ContentProvider简介8.1.1ContentProvider类 8.1.2ContentResolver类8.2开发ContentProvider程序8.2.1编写ContentProvider子类8.2.2注册ContentProvider8.2.3使用ContentProvider8.3操作系统的ContentProvider8.3.1管理联系人 8.3.2管理多媒体 8.4ContentObserver学习目标了解ContentProvider类和ContentResolver类能够开发ContentProvider程序能够操作系统的ContentProvider了解ContentObserver类8.1ContentProvider简介ContentProvider是Android系统的四大组件之一,是不同应用程序之间进行数据交换的标准API,也是所有应用程序之间数据存储和检索的一个桥梁,其作用是使各个应用程序之间实现数据共享。它以Uri的形式对外提供数据,允许其他应用操作本应用程序的数据,其他应用通过ContentResolver来访问共享的数据。8.1.1ContentProvider类ContentProvider与Activity、Service、BroadcastReceiver类似,都是Android应用的四大组件之一,需要在AndroidManifest.xml配置文件中进行配置。在ContentProvider类的增、删、改、查操作方法中,都用到类型为Uri的参数,该参数是ContentProvider对外提供的一个自身数据集的唯一标识。当一个ContentProvider管理多个数据集时,该ContentProvider将会为每个数据集分配一个独立且唯一的Uri。Uri的语法格式如下:content://数据路径/标识ID(可选)其中,“content://”是ContentProvider规定的协议,用来标识ContentProvider所管理的scheam,是一个标准的前缀,不能被修改;“数据路径”用于查找所要操作的ContentProvider;“标识ID”是可选的,标识不同数据资源,当访问不同资源时,该ID是动态改变的。Android系统提供了UriMatcher工具类对Uri进行匹配判断,该工具类提供了以下两个常用的方法:•voidaddURI(Stringauthority,Stringpath,intcode):用于注册Uri,其中参数authority和path组合成一个Uri,而参数code代表Uri对应的标识符;•intmatch(Uriuri):根据前面注册的Uri判断指定的Uri对应的标识符,如果找不到匹配的标识码,则返回-1.8.1.2ContentResolver类ContentProvider类中共享的数据不能被Android应用程序直接访问,而是通过操作ContentResolver类来间接操作ContentProvider中的数据。ContentResolver是内容解析器,提供了对ContentProvider数据进行查询、插入、修改和删除等操作方法。8.2开发ContentProvider程序开发ContentProvider程序的步骤如下:(1)创建一个ContentProvider子类,并实现query()、insert()、update()和delete()等方法。(2)在AndroidManifest.xml配置文件中注册ContentProvider,并指定android:authorities属性(一般自动注册)。(3)使用ContentProvider,Activity和Service等组件都可以获取ContentProvider对象,并调用该对象相应的方法进行操作。8.2.1编写ContentProvider子类新建一个Android项目,在Java源文件夹上右击,选择New→Other→ContentProvider选项,弹出如图8.1所示对话框,在ClassName文本框中输入ContentProvider子类的类名,在URIAuthorities文本框中输入数据路径。8.2.2注册ContentProvider在AndroidManifest.xml配置文件中注册ContentProvider,只需在<application>元素中添加<provider>子元素即可,其示例代码如下。<providerandroid:name=".MyContentProvider"android:authorities="tentprovider.myconentprovider"android:enabled="true"android:exported="true"></provider>8.2.3使用ContentProvider(1)首先需要修改相应的XML布局文件(2)修改MainActivity.java文件8.3操作系统的ContentProviderAndroid系统本身提供了大量的ContentProvider,例如联系人信息,系统的多媒体信息,系统短信等,程序员自己开发的Android应用程序时,可以通过ContentResolver来调用系统ContentProvider所提供的query()、insert()、update()和delete()方法,如此即可对Android内部数据进行操作。8.3.1管理联系人Android系统用于管理联系人的ContentProvider的Uri有以下三种:ContactsContract.Contacts.CONTENT_URI:管理联系人的Uri;ContactsContract.CommonDataKinds.Phone.CONTENT_URI:管理联系人的电话Uri;ContactsContract.CommonDataKinds.Email.CONTENT_URI:管理联系人的E-mail的Uri。8.3.2管理多媒体Android系统为多媒体提供了相应的ContentProvider的Uri,具体如下所示:MediaStore.Audio.Media.EXTERNAL_CONTENT_URI:存储在外部存储(SD卡)上的音频文件内容的ContentProvider的Uri。MediaStore.Audio.Media.INTERNAL_CONTENT_URI:存储在手机内部存储器上的音频文件内容的ContentProvider的Uri。MediaStore.Images.Media.EXTERNAL_CONTENT_URI:存储在外部存储器(SD卡)上的图片文件内容的ContentProvider的Uri。MediaStore.Images.Media.INTERNAL_CONTENT_URI:存储在手机内部存储器上的图片文件内容的ContentProvider的uri。MediaStore.Video.Media.EXTERNAL_CONTENT_URI:存储在外部存储器(SD卡)上的视频文件内容的ContentProvider的Uri。MediaStore.Video.Media.INTERNAL_CONTENT_URI:存储在手机内部存储器上的视频文件内容的ContentProvider的Uri。8.4ContentObserverContentObserver(内容观察者)的目的是观察(捕获)特定Uri引起的数据库变化,继而做出一些相应的处理。它类似于数据库技术中的触发器,当ContentObserver所观察的Uri发生变化时,便会触发ContentObserver的onChange()方法。触发器分为表触发器和行触发器,相应的ContentObserver也分为表ContentObserver和行ContentObserver,当然这是与它所监听的UriMIMEType有关。ContentObserver的两个常用方法,具体如下所示:ContentObserver(Handlerhandler):构造

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论