十年磨一剑笔记android基础day10内容提供者_第1页
十年磨一剑笔记android基础day10内容提供者_第2页
十年磨一剑笔记android基础day10内容提供者_第3页
十年磨一剑笔记android基础day10内容提供者_第4页
十年磨一剑笔记android基础day10内容提供者_第5页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

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

文档简介

报名资源总连接 (了解)为什么需要内容提供(掌握)内容提供者工作原class extends重写方法}<provider1找到要的uri(掌握)自己实现一个内容提供者的增删改 表 Student A:应用要对B应用里面的数据库 表和student执行crud的操作B应用使用ContentResolver来进行操如果有的人测试使用的是 4.4版本注意publicclassMyContentProviderextendsContentProviderprivateOpenHelperhelper;//数据库的帮助类privatefinalstaticStringauthority= privatefinalstatic S=privatefinalstaticint_ID=10;privatefinalstaticintSTUDENTS=2;privatestaticUriMatchermatcher=newUriMatcher(UriMatcher.NO_MATCH);//authority path组成了 code该uri的唯一标matcher.addURI(authority," ",S);//content://authority/matcher.addURI(authority," /#",_ID);//表里面指定id的记录}publicbooleanonCreate()helper=MyOpenHelper.getInstance(getContext());returnfalse;}publicCursorquery(Uriuri,String[]projection,Stringselection,String[]selectionArgs,StringsortOrder){Databasedb=helper.getReadableDatabase();Cursorret=null;intcode=matcher.match(uri);switch(code){caseret=db.query("",projection,selection,selectionArgs,null,null,sortOrder);caseret=db.query("student",projection,selection,selectionArgs,null,null,sortOrder);thrownewIllegalArgumentException("没有这样的}return}publicUriinsert(Uriuri,ContentValuesvalues){Databasedb=helper.getWritableDatabase();intcode=matcher.match(uri);switch(code){caseS:db.insert("",null,caseSTUDENTS:db.insert("student",null,values);thrownewIllegalArgumentException("没有这样的}return}publicintdelete(Uriuri,Stringselection,String[]selectionArgs){Databasedb=helper.getWritableDatabase();intcode=switch(code){caseS:db.delete("",selection,casedb.delete("student",selection,selectionArgs);thrownewIllegalArgumentException("没有这样的}return}publicintupdate(Uriuri,ContentValuesvalues,Stringselection,String[]selectionArgs){Databasedb=helper.getWritableDatabase();intcode=matcher.match(uri);switch(code){caseS:db.update("",values,selection,casedb.update("student",values,selection,selectionArgs);thrownewIllegalArgumentException("没有这样的}return} //vnd.android.cursor.dir/publicStringgetType(Uriuri){Stringtype=null;intcode=matcher.match(uri);switch(code){casetype="vnd.android.cursor.item/";casetype="vnd.android.cursor.dir/";casetype="vnd.android.cursor.dir/student";}return}}内容提供者常用的apiUricontent://authortyDatabaseOpenHelperContentValues 获取10 (掌握)利用内容提供者联系没有数据库数据是从其他的应用程序里面内容提供者的数据:联系人的表联系人的唯一标示_id:数据表的是联系的数号码 邮箱。。raw_contact_id:iddata2:一定要确一定要确 的操作 datapublicvoidget(ViewList<Info>infos=newArrayList< com.android.contactsContentResolvercr=Uriuri=Uri.parse(" Cursorcursor=cr.query(uri,newString[]{"_id"},null,null,null);int_id=Infoinfo=newInfo();info._id=_id;//datadatauri=Uri.parse(" Cursorcursor2=cr.query(uri,newString[]{"data1","mimetype"},null,null,null);/*String[]names=cursor2.getColumnNames();for(Stringstring:names){Stringdata1=cursor2.getString(0);Stringmimetype=cursor2.getString(1);info.phone=}elseif("vnd.android.cursor.item/name".equals(mimetype)){//=data1; =}}}for(Infoinfo:infos){}}(掌握)利用内容提供者插系publicvoidinsert(View//插系 //1先插入一条记录到raw_contacts //2data表里面插入数据还要带上 ContentResolvercr=getContentResolver();Uriuri=Uri.parse(" ContentValuesvalues=newContentValues();Uriinsert=cr.insert(uri,=uri= //插入values.put("raw_contact_idraw_contact_id);values.put("data1","亲几圈");values.put("mimetype","vnd.android.cursor.item/name");cr.insert(uri,values);values.put("raw_contact_id",raw_contact_id);values.put("data1"," values.put("mimetype","vnd.android.cursor.item/phone_v2");values.put("data2",1);values.put("raw_contact_id",raw_contact_id);values.put("data1","qi values.put("mimetype","vnd.android.cursor.item/_v2");values.put("data2",1);}内容提供者在开发中自己写不多。的是内容提供者 确定要的应看文件里面的provider节 :1类23是否需看类:Ctrl+ 输入找到需要使用的Uri(一定要看该应用程序里面数据库的表(掌握)内容观察者的原L应用publicclassMainActivityextendsActivityprivatestaticfinalStringTAG="MainActivity";protectedvoidonCreate(BundlesavedInstanceState){ContentResolvercr=Uriuri=Uri.parse(" cr.query(uri,null,null,null,null);,"MyContentObserverobserver=newMyContentObserver(new//使用内容观察者uri数据的改 cr.registerContentObserver(uri,true,observer);}privateclassMyContentObserverextendspublicMyContentObserver(Handlerhandler){}//uri数据的改变发出改变通知publicvoidonChange(booleanselfChangeLog.i(TAG,"数据已经发生改变");}}}(掌握)利用内容观察者用户数据1数据在哪里:数据的2该数据库里面的数据是通过内容提供者对外3的内容提供者已经发出改变通4使用内容观察者来检测的变publicclassMainActivityextendsActivitypublicstaticfinalStringTAG="MainActivity";privateContentResolvercr;privateMyContentObserverprotectedvoidonCreate(BundlesavedInstanceState){//检测的变cr=Uriuri=observer=newMyContentObserver(newHandler());cr.registerContentObserver(uri,true,observer);}privateclassMyContentObserverextendspublicMyContentObserver(Handlerhandler){}publicvoidonChange(booleanselfChange){//查询出插入的那条ContentResolvercrgetContentResolver();Uriuri=Uri.parse("content://sms");Cursorcursorcr.query(urinewString[]{"body"},nullnull"_iddesc");Stringbody=cursor.getString(0);Log.i(TAG,"body:"+body);}}protectedvoidonDestroy(){}}(掌握4.0一下 publicclassMainActivityextendsActivityprivateMyAdapterprotectedvoidonCreate(BundlesavedInstanceState){ListViewlv=(ListView)List<CallInfo>infos=CallInfoService.getCallInfos(this);adapter=newMyAdapter(infos);publicbooleanonItemLongClick(AdapterView<?>parent,Viewview,intposition,longid){CallInfoinfo=(CallInfo)adapter.getItem(position);finalStringnumber=infonumber;String[]items=newString[]{"号码到拨号盘","拨号","newpublicvoidonClick(DialogInterfacedialog,intwhich){switch(which){case//号码到拨号case1://拨号权case2:}}returnfalse;}}privateclassMyAdapterextendsprivateList<CallInfo>infos;privateLayoutInflatermInflater;publicMyAdapter(List<CallInfo>infos){s=mInflater=(LayoutInflater)}publicintgetCount(){returninfos.size();}publicObjectgetItem(intposition)//TODOAuto-generatedmethodstubreturninfos.get(position);}publiclonggetItemId(intposi

温馨提示

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

评论

0/150

提交评论