《Android项目式程序设计》10 内容提供者写字字帖_第1页
《Android项目式程序设计》10 内容提供者写字字帖_第2页
《Android项目式程序设计》10 内容提供者写字字帖_第3页
《Android项目式程序设计》10 内容提供者写字字帖_第4页
《Android项目式程序设计》10 内容提供者写字字帖_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

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

文档简介

项目十内容提供者学习目标掌握ContentProvider的功能与意义了解ContentProvider与ContentResolver的关系掌握ContentObserver类的作用和常用方法情景导入内容提供者是数据库和应用程序之间的桥梁,为了能够更方便的得到用户所需信息,就需要内容提供者来获取数据。例如提供短信及联系人信息等。本任务主要使用ContentProvider技术,实现使用内容提供者对联系人信息的操作功能。任务描述本任务将设计一款使用ContentProvider共享联系人数据并且能进行修改删除的程序。使用线性布局技术来设计通讯系统界面主界面,点击“添加联系人”按钮,获取输入的联系人姓名,电话号创建数据库,将得到的信息添加到数据库中点击“查询联系人”按钮,对数据库进行查询,并将得到的数据放到ListView中进行显示选中ListView中的一条记录长按,弹出提示框“确认删除”,选中删除将数据库中信息与ListView中的信息进行删除,选中取消则返回主界面【基本框架】基本框架如图10.1所示,将框架图转换成的效果如图10.2所示。任务描述任务技能技能点1ContentProvider数据共享1ContentProvider简介Android提供了ContentProvider,一个程序可以通过实现一个ContentProvider的抽象接口将数据完全公开给其他程序,而且ContentProvider是以类似数据库中表的方式将数据公开。ContentProvider存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。2Uri简介Uri指定了将要操作的ContentProvider,可以把一个Uri看作是一个网址,把Uri分为三部分:"content://",可以看作是网址中的"http://"主机名或authority,用于唯一标识这个ContentProvider,外部应用需要根据这个标识来找到它。可以看作是网址中的主机名,如""路径名,用来表示将要操作的数据。可以看作网址中细分的内容路径。网址对应内容路径如图10.3所示任务技能任务技能任务技能3ContentResolver简介应用程序的数据公开化即可被其他程序使用,可通过2种方法实现:创建一个私有的ContentProvider;将数据添加到一个已经存在的ContentProvider中,前提是有相同数据类型并且有写入ContentProvider的权限。同时,Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。获取ContentResolver对象如表10.1所示。任务技能表2.1控件常用属性表任务技能技能点2ContentProvider实例模型1ContentProvider、ContentResolver和Uri的关系当多个应用程序同时通过ContentResolver来操作ContentProvider提供的数据时,ContentResolver调用的数据操作将会给同一个ContentProvider处理。ContentResolver,Uri与ContentProvider的关系如图10.4所示。任务技能2ContentObserver调用方法ContentObserver目的是观察特定Uri引起的数据库的变化,随着变化做出相应的处理,当ContentObserver所观察的Uri发生变化时,就会触发ContentObserver。触发器有两种分为表触发器、行触发器,ContentObserver也分为“表”ContentObserver、“行”ContentObserver,。ContentObserver与ContentProvider和ContentResolver的关系如图10.5所示。任务技能任务技能ContentObserver的构造函数中有一个参数Handler,原因在于ContentObserver内部使用了一个实现Runnable接口的内部类,该类是NotificationRunnable类,用来操作数据库内容。使用Handler发送消息。注册ContentObserver的方法是:getContentResolver().registerContentObserver(uri,

notifyForDescendents,

observer),该方法中的3个参数说明如表10.2所示。任务技能构造方法:解释:所有ContentObserver的派生类都需要调用这个构造方法。参数:handler:Handler对象。可以是主线程Handler,也可以是任何Handler对象常用方法。功能:观察到的Uri发生变化时,回调该方法去处理该变化。参数:selfChange回调后,它返回的值一般为false

。观察特定Uri步骤如下:任务技能(1)创建特定的ContentObserver派生类,实现必须重载父类构造方法,用重载onChange()方法去处理所有回调后的功能实现。(2)使用context.getContentResolover()获得ContentResolove对象,然后调用registerContentObserver()方法去注册内容观察者。注意:这里需要手动的调用unregisterContentObserver()取消注册ContentObserver。任务技能3开发ContentProvider子类开发ContentProvider需要实现query()、insert()、update()和delete()的方法,其实质是调用指定Uri对应的ContentProvider增、删、改、查方法。ContentProvider子类一定要在AndroidManifest.xml文件中注册,指定属性android:authorities供其他应用程序调用。ContentProvider数据操作相关方法如表10.3所示。任务技能任务技能技能点3ContentProvider管理操作Android系统本身提供了大量的ContentProvider,开发者开发的Android应用也可通过ContentResolver来调用系统提供的query(),insert(),update()和delete()方法对数据进行管理。

1ContentProvider管理联系人Android系统提供了Contacts应用程序来管理联系人,并且提供了ContentProvider,允许其他应用程序以ContentProvider来管理联系人数据。下面是Android系统用于管理联系人的ContentProvider的Uri任务技能ContactsContent.Cintacts.CONTENT_URI:管理联系人UriContactsContent.ComminDataKinds.Phone.CONTENT_Uri:管理人电话UriContactsContent.ComminDataKinds.Email.CONTENT_Uri:管理联系人Email的Uri任务技能2

ContentProvider管理多媒体内容Android的很多Uri都是固定的,如Android提供Camera程序支持拍照拍摄、用户拍照、摄像等,Android为这些多媒体提供了ContentProvider,ContentProvider的Uri如表10.4所示。任务实施第一步:在Eclipse中创建一个Android工程,命名为“通讯录系统”,并设计界面。如图10.2所示。第二步:在“通讯录系统”中创建一个person数据库。第三步:在src文件夹下建立MainActivity.java文件并编写的点击“添加联系人”按钮单击事件,获取输入的联系人姓名,电话号相关代码,并将信息添加到person数据库中。任务实施第四步:编写“查询联系人”按钮单击事件,将数据库中的信息显示到ListView中。第五步

:选中ListView中单条数据长按,弹出确认删除提示框,点击“确定”或“取消”按钮,对该条数据进行删除,并且删除在数据库中对应的信息。

第六步运行程序,运行结果如图10.2、10.5所示。任务拓展【拓展目的】熟悉并掌握内容提供者的使用方法。【拓展内容】在“通讯录系统”基础上,实现长按ListView单条记录,弹出删除与编辑框,对数据进行编辑,效果如图10.2所示。【拓展步骤】1设计思路长按ListView弹出编辑删除提示框。2长按ListView中单个条目进行编辑功能。任务拓展任务总结本项目主要介绍了Android系统中ContentProvider组件的功能和用法,ContentProvider是Android系统内不同程序之间进行数据交换的标准接口。通过本项目的学习需要掌握三个API

的用法:ContentProvider、ContentResolver和ContentObserver,其中ContentResolver用于操作ContentProvider提

温馨提示

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

评论

0/150

提交评论