手机安全卫士知识总结黑马程序员android_第1页
手机安全卫士知识总结黑马程序员android_第2页
手机安全卫士知识总结黑马程序员android_第3页
手机安全卫士知识总结黑马程序员android_第4页
手机安全卫士知识总结黑马程序员android_第5页
已阅读5页,还剩2页未读 继续免费阅读

付费下载

下载本文档

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

文档简介

内容提供者 策略内容提供者中数据更改可被类似于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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论