第6章 内容提供者 教学设计Word文档格式.docx
- 文档编号:19893691
- 上传时间:2023-01-11
- 格式:DOCX
- 页数:12
- 大小:135.04KB
第6章 内容提供者 教学设计Word文档格式.docx
《第6章 内容提供者 教学设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《第6章 内容提供者 教学设计Word文档格式.docx(12页珍藏版)》请在冰豆网上搜索。
2、要求学生会对使用内容提供者对外暴露数据
3、要求学生会使用ContentResolver操作其他应用的数据
教学重点
内容提供者的使用、对数据进行增删改查、内容观察者的使用。
教学难点
内容提供者的使用、内容观察者的使用
教学方式
教师采用课堂讲授为主,使用教学PPT辅助授课。
教
学
过
程
第一学时
(内容提供者简介及创建、Uri简介)
一、情景导入
老师引导,通过数据库、SharedPreferences和文件都可以存储和访问数据,那么如果其他应用要写访问我们的应用中的数据应该怎么办呢?
然后引出内容提供者,内容提供者。
二、知识讲解
1、内容提供者简介(PPT7-8)
老师讲解,内容提供者是Android中的四大组件之一,用于保存和检索数据,是不同应用程序之间共享数据的接口。
ContentProvider是不同应用程序之间进行数据交换的标准API,以Uri的形式对外提供数据,允许其他应用操作本应用数据。
其他应用则使用ContentResolver,并根据ContentProvider提供的Uri操作指定数据。
A应用需要使用ContentProvider暴露数据,才能被其他应用操作。
B应用必须通过ContentResolver操作A应用暴露出来的数据,而A应用会将操作结果返回给ContentResolver,然后ContentResolver再将操作结果返回给B应用。
2、创建内容提供者(PPT9)
在创建一个内容提供者时,首先需要定义一个类继承android.content包下的ContentProvider类。
ContentProvider类是一个抽象类,子类需要重写它的onCreate()、delete()、getType()、insert()、query()、update()这几个抽象方法。
publicclassPersonDBProviderextendsContentProvider{
publicbooleanonCreate(){
returnfalse;
}
publicCursorquery(Uriuri,String[]projection,Stringselection,
String[]selectionArgs,StringsortOrder){
returnnull;
publicStringgetType(Uriuri){
publicUriinsert(Uriuri,ContentValuesvalues){
publicintdelete(Uriuri,Stringselection,String[]selectionArgs){
return0;
publicintupdate(Uriuri,ContentValuesvalues,Stringselection,
String[]selectionArgs){
}
然后讲解这几个方法各自的作用。
•publicbooleanonCreate():
创建ContentProvider时调用
•publicintdelete(Uriuri,Stringselection,String[]selectionArgs):
根据传入Uri删除指定条件下的数据
•publicUriinsert(Uriuri,ContentValuesvalues):
根据传入的Uri插入数据
•publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder):
根据传入的Uri查询指定条件下的数据
•publicintupdate(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs):
根据传入的Uri更新指定条件下的数据
•publicStringgetType(Uriuri):
用于返回指定Uri代表数据的MIME类型
创建完之后老师必须要强调一下,内容提供者是四大组件之一,必须要进行注册.
<
provider
android:
name="
cn.itcast.db.PersonDBProvider"
authorities="
cn.itcast.db.personprovider"
>
/provider>
3、Uri简介(PPT10-11)
Uri代表了数据操作的方法,Uri是由scheme、authorites、path三部分组成。
scheme部分“content:
//”是一个标准的前缀,表明这个数据被内容提供者所控制,它不会被修改。
authorities部分“cn.itcast.db.personprovider”是在清单文件中指定的android:
authorities属性值,该值必须唯一,它表示了当前的内容提供者。
path部分“/person”代表资源(或者数据),当访问者需要操作不同数据时,这个部分是动态改变的。
Uri.parse(Stringstr)方法是将字符串转化成Uri对象的。
为了解析Uri对象,Android系统提供了一个辅助工具类UriMatcher用于匹配Uri。
•publicUriMatcher(intcode):
创建UriMatcher对象时调用,参数通常使用UriMatcher.NO_MATCH,表示路径不满足条件返回-1。
•publicvoidaddURI(Stringauthority,Stringpath,intcode):
添加一组匹配规则,authority即Uri的authoritites部分,path即Uri的path部分
•publicintmatch(Uriuri):
匹配Uri与addURI方法相对应,匹配成功则返回addURI方法中传入的参数code的值。
老师重点强调,这几个方法非常重要,要求学生必须要掌握。
三、知识巩固
1、总结知识点,使用博学谷系统中的随堂练习题巩固本节课所学知识。
2、使用博学谷系统中的测试题给学生布置作业。
第二学时
(案例——读取联系人信息)
一、知识回顾
1、对上节课留的作业进行答疑。
2、回顾总结上节课的内容,引出本节课主题
老师引导,上节课讲解了什么是内容提供者以及它的创建,并对内容提供者中几个方法的参数Uri进行讲解,接下来为了让初学者更好的使用内容提供者,接下来通过带大家编写一个读取联系人信息的案例。
二、知识讲解
1、案例——读取联系人信息(PPT12)
老师说明,“读取联系人信息”的案例来实现了查询自己暴露的数据,并将数据捆绑到ListView控件中的功能。
在讲解案例时要针对每一个步骤进行详细的分析,并说明能实现哪些效果。
三、知识巩固
第三学时
(访问内容提供者、案例——短信备份)
老师引导,前两节课讲解了如何使用内容提供者暴露本应用的数据,接下来讲解如何通过另一个应用程序访问内容提供者所暴露的数据。
1、ContentResolver介绍(PPT13)
教师引导,在Android系统中,ContentResolver充当着一个中介的角色。
应用程序通过ContentProvider暴露自己的数据,通过ContentResolver对应用程序暴露的数据进行操作。
由于在使用ContentProvider暴露数据时提供了相应操作的Uri,因此在访问现有的ContentProvider时要指定相应的Uri,然后通过ContentResovler对象来实现数据的操作。
Uriuri=Uri.parse("
content:
//cn.itcast.db.personprovider/person"
);
ContentResolverresolver=context.getContentResolver();
Cursorcursor=resolver.query(uri,newString[]{"
address"
"
date"
"
type"
body"
},null,null,null);
while(cursor.moveToNext()){
Stringaddress=cursor.getString(0);
longdate=cursor.getLong
(1);
inttype=cursor.getInt
(2);
Stringbody=cursor.getString(3);
cursor.close();
上述代码用ContentResolver对象的query()方法实现了对其他应用数据的查询功能,需要注意的是,这里的Uri只能提供查询操作,如果使用查询操作的Uri进行更新操作会抛异常。
2、短信备份案例(PPT14)
老师引导,接下来通过“短信备份”案例学习使用ContentResolver查询内容提供者暴漏的数据。
然后根据教材一步步编写程序,实现效果如下:
第四学时
(内容观察者、案例——短信接收器)
一、知识回顾
老师引导,前面已经学习过怎样用ContentProvider暴露数据,也学习了怎样用ContentResolver查询暴露的数据。
现在有一个问题,如果需要当ContentProvider暴露的数据发生改变时就使用ContentResolver查询该怎么做呢?
然后引出ContentObserver可以时时监控ContentProvider暴露的数据。
1、内容观察者介绍(PPT15)
内容观察者(ContentObserver)是用来观察指定Uri所代表的数据。
当ContentObserver观察到指定Uri代表的数据发生变化时,就会触发ContentObserver的onChange()方法。
此时在onChange()方法里使用ContentResovler可以查询到变化的数据。
上图表示,使用ContentObserver观察A应用的数据时,首先要在A应用的ContentProvider中调用ContentResolver的notifyChange()方法。
调用了这个方法之后当数据发生变化时,它就会向“消息中心”发送数据变化的消息。
然后C应用观察到“消息中心”有数据变化时,就会触发ContentObserver的onChange()方法。
2、常用方法(PPT16)
•publicvoidContentObserver(Handlerhandler):
ContentObserver的派生类都需要调用该构造方法。
参数可以是主线程Handler(可以更新UI),也可以是任何Handler对象。
•publicvoidonChange(booleanselfChange):
当观察到的Uri代表的数据发生变化时,会触发该方法。
老师引导,ContentProvider通过delete()、insert()、update()会使数据发生变化,因此使用ContentObserver同样需要观察这三个方法,并且需要在ContentProvider的这三个方法中调用ContentResolver的notifyChange()方法,如下代码:
publicUriinsert(Uriuri,ContentValuesvalues){
if(matcher.match(uri)==INSERT){//匹配Uri路径
SQLiteDatabasedb=helper.getWritableDatabase();
db.insert("
person"
null,values);
getContext().getContentResolver().
notifyChange(PersonDao.messageuri,null);
}else{//匹配失败
thrownewIllegalArgumentException("
路径不匹配,不能执行插入操作"
接下来实现在应用中注册观察者,并监听数据变化的功能:
publicclassMainActivityextendsActivity{
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ContentResolverresolver=getContentResolver();
Uriuri=Uri.parse("
//aaa.bbb.ccc"
resolver.registerContentObserver(
uri,true,newMyObserver(newHandler()));
privateclassMyObserverextendsContentObserver{
publicMyObserver(Handlerhandler){
super(handler);
}
publicvoidonChange(booleanselfChange){
super.onChange(selfChange);
Toast.makeText(MainActivity.this,"
数据库的内容变化了."
1).show();
Uriuri=Uri.parse("
ContentResolverresolver=getContentResolver();
Cursorcursor=resolver.query(uri,newString[]{"
"
"
cursor.moveToFirst();
Log.v("
MyObserver"
cursor.close();
}
3、案例——短信接收器(PPT17)
老师引导,内容观察者的相关方法已经学习完了,接下来将通过案例“短信接收器”来巩固内容观察者的用法。
老师针对案例进行总结,并说明在使用内容观察者需要注意的事项。
第五、六学时
(上机练习)
1、完成教材中所有教学案例以及课后习题中的上机练习。
2、使用博学谷系统中的测试题给学生布置上机练习,或者老师自行安排上机练习。
思考和练习
见教材第6章课后习题
后
记
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 第6章 内容提供者 教学设计 内容 提供者 教学 设计