版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
内容提供者 策略内容提供者中数据更改可被类似于JavaBean一样,外部程序不能直接本程序中的数据库,这里ContentProvider就 crud相应的4个方 用于对外提供CRUD操作 Url所代表数据的MIME返回的是单条记录:以 开头,如vnd.android.cursor.item/返回的是多条记录:以 开头,如vnd.android.cursor.dir/在文件的<application>节点下进行配置,<provider>中需要指定name、exported :是Provider时的路径,要唯一 authorites:<provider>authorites URIUriMatherContentUris工具类:CRUDUriContentUrisUriID部分,2withAppendedId(uri,id)IDparseId(uri)ID示例代码(内容提供者类publicclassHeimaProviderextendsContentProviderprivatestaticfinalint= //匹配privatestaticfinalintSTUDENT=2; //匹配码privatestaticfinalint_ID=3; //匹配码privateMyHelperhelper;/**Uri匹配器privateUriMatcheruriMatcher=newUriMatcher(UriMatcher.NO_MATCH);publicbooleanonCreate(){helper=newMyHelper(getContext());//==添加uri匹配模式,设置匹配码(参数3)Uri uriMatcher.addURI("vider","#", //uriMatcher.addURI("vider","student",return}publicUriinsert(Uriuri,ContentValuesvalues){Databasedb=helper.getWritableDatabase();switch(uriMatcher.match(uri //匹配 longid=db.insert("","id",values);returnContentUris.withAppendedId(uri, //在原uri上拼上id,生成caselonginsert=db.insert("student","id",values);returnContentUris.withAppendedId(uri, //为路径上,加上不是合法的}}publicintdelete(Uriuri,Stringselection,String[]selectionArgs){Databasedb=helper.getWritableDatabase();switch(uriMatcher.match(uri //匹配caselongparseId //获取传过来的IDselection //设置查询条selectionArgsnewStringparseId //查询条件值
caseintdelete=db.delete("",selection,selectionArgs);return不是合法的}}
publicintupdate(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs){Databasedb=helper.getWritableDatabase();switch(uriMatcher.match(uri))caselongparseId //获取传过来的IDselection //设置查询条selectionArgsnewStringparseId //查询条件值 intupdate=db.update("",values,selection,selectionArgs);return不是合法的}}publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){Databasedb=switch(uriMatcher.match(uri))case//==根据ID查询==longparseId //获取传过来的IDselection //设置查询条selectionArgsnewStringparseId //查询条件值 Cursorcursor=db.query("",projection,selection,selectionArgs,null,
//==注意:此处的db与cursor不能关闭==return
不是合法的}}//返回传入URI的类型,可用于测试URIpublicStringgetType(Uriuri){switch(uriMatcher.match(uri)){case_ID: //表示单 记 //表单多 记return}}} .provider"1.2内容提供者通过Context获得ContentResolver内 publicclassHeimaProviderTestextendsAndroidTestCase/**测试添加数据publicvoidtestInsert()ContentResolverresolver=this.getContext().getContentResolver();Uriuri=Uri.parse(" ContentValuesvalues=newContentValues();values.put("name","小翼");values.put("balance13000);Uriinsertresolver.insert(uri //获取返回的uri}/**测试删除publicvoidtestRemove()ContentResolverresolverthis.getContext().getContentResolver();Uriuri=Uri.parse(" intcount=resolver.delete(uri,"id=?",newString[]{3+""});System.out.println("删除了"+count+"行");}/**测试更新publicvoidtestUpdate()ContentResolverresolver=this.getContext().getContentResolver();Uriuri=Uri.parse(" ContentValuesvalues=newContentValues();values.put("name","update");values.put("balance",56789);intupdateresolver.update(urivalues,"idnewString6System.out.println("更新了"+update+"行");}/**测试查询publicvoidtestQueryOne()ContentResolverresolver=this.getContext().getContentResolver();Uriuri= Cursorc=resolver.query(uri,newString[]{"name","balance"},"id=?",new{101+""},if(c.moveToNext()){System.out.println(""+c.getInt(1));}}/**测试查询全部publicvoidtestQueryAll()
ContentResolverresolver=this.getContext().getContentResolver();Uriuri= Cursorc=resolver.query(uri,newString[]{"id","name","balance"},null,null,while(c.moveToNext())System.out.println(c.getInt(0)+","+c.getString(1)+","+}}/**测试查询一条publicvoidtestQueryOneWithUriId()ContentResolverresolver=Uriuri= //查询ID为3的录Cursorc=resolver.query(uri,newString[]{"id","name","balance"},null,null,null);if(c.moveToNext()){System.out.println(c.getInt(0)+","+c.getString(1)+","+}}}
/**测试获取内容提供者的返回类型publicvoidtestGetType()ContentResolverresolver= }1.3内容提供者的数据变ContextgetContentResolver()ContentResolver调用其registerContentObserver()方法指定对某个UriContentObserver自定义ContentObserveronChange()方法获取数据示例代码(发通知部分publicintdelete(Uriuri,Stringselection,String[]selectionArgs){Databasedb=helper.getWritableDatabase();intdelete=db.delete("",selection,//==通过内容者对象ContentResolve发通知给所有的Observer==getContext().getContentResolver().notifyChange(uri,null);return}}//内容观察privatevoidinitRegisterContentObserver()Uriuri= 的//==第2个参数:true表示的uri的后代都可以 到==getContentResolver().registerContentObserver(uri,true,newContentObserver(newHandler())publicvoidonChange(booleanselfChange List ((BaseAdapter)}}内容提供者的简单示2.1Android系统提供了Provider 数据库在 定义一个Observer需限内容观察者一直在这个消息信箱,这样内容观察者收到这个消息后,就会响应;//publicclassMainActivityextendsActivity{protectedvoidonCreate(BundlesavedInstanceState){}//privatevoidinitSmsObserver()finalUriuri=Uri.parse("content://sms"); //内容提供者的URI地址,content://sms全部getContentResolver().registerContentObserver(uri,true,newContentObserver(newHandler()){publicvoidonChange(booleanselfChange)//通过内容提供者来获取信息,这里获取最后一Cursorc=getContentResolver().query(uri,newString[]{"address","date","type","body"},null,null,"_idDESCLIMIT1");if(c.moveToNext())Stringaddress=c.getS
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 低钾的中医综合治疗方案
- 2024年五年级品社下册《国际经济文化交流》教学设计2 沪教版
- 《汽车发动机》-3.1-学习情境三(任务一)
- 第14课 小中堂集字练习(二)教学设计小学书法练习指导六年级上册华文版
- 2025-2026学年爱莲说教案舞蹈
- 2025-2026学年防疫小病毒教案
- 2026年烤房销售合同(1篇)
- 2026年诉讼撤销装修合同(1篇)
- 2025-2026学年儿歌插画教案膜拜
- 本单元复习与测试教学设计小学信息技术(信息科技)六年级上册桂科版
- 2026河南平顶山发展投资控股集团校园招聘备考题库(名师系列)附答案详解
- 探寻长牡蛎糖原品质性状:遗传密码与分子奥秘解析
- 2026年广东省肇庆市辅警考试试卷带答案
- 钢结构现场焊接作业的防火技术方案
- 2025年高职旅游服务与管理(旅游英语基础)试题及答案
- 苯乙烯安全培训内容课件
- (新版)2026年导游资格证考试题库含答案(模拟题)
- 灾难医疗救援中的资源分级与团队配置
- 工业项目投资估算及财务评价附表(有计算公式)
- 工程建设质量信得过班组创建材料
- 人音版《采花》教学设计
评论
0/150
提交评论