您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > 高级程序员修炼之道-Android培训系列课程之ContentProvider5
-AndroidContentProvider://(client)AndroidContentProviderContentProviderSQLiteContentProviderContentProvidersDecideifyouneedacontentprovider.Youneedtobuildacontentproviderifyouwanttoprovideoneormoreofthefollowingfeatures:Youwanttooffercomplexdataorfilestootherapplications.Youwanttoallowuserstocopycomplexdatafromyourappintootherapps.Youwanttoprovidecustomsearchsuggestionsusingthesearchframework.ContentProviders1.2.-AndroidContentProvider://authority/path/idpathididContentProviderURI[java]viewplaincopyprint?1.publicclassExampleProviderextendsContentProvider{...2.//CreatesaUriMatcherobject.3.privatestaticfinalUriMatchersUriMatcher;...4./*5.*ThecallstoaddURI()gohere,forallofthecontentURIpatternsthattheprovider6.*shouldrecognize.Forthissnippet,onlythecallsfortable3areshown.7.*/...8./*9.*Setstheintegervalueformultiplerowsintable3to1.Noticethatnowildcardisused10.*inthepath11.*/12.sUriMatcher.addURI(com.example.app.provider,table3,1);13.14./*-AndroidContentProvider*Setsthecodeforasinglerowto2.Inthiscase,the#wildcardis16.*used.content://com.example.app.provider/table3/3matches,but17.*content://com.example.app.provider/table3doesn't.18.*19.**:Matchesastringofanyvalidcharactersofanylength.20.*#:Matchesastringofnumericcharactersofanylength.21.22.*/23.sUriMatcher.addURI(com.example.app.provider,table3/#,2);...24.//ImplementsContentProvider.query()25.publicCursorquery(26.Uriuri,27.String[]projection,28.Stringselection,29.String[]selectionArgs,30.StringsortOrder){...31./*32.*Choosethetabletoqueryandasortorderbasedonthecodereturnedfortheincoming33.*URI.Here,too,onlythestatementsfortable3areshown.34.*/35.switch(sUriMatcher.match(uri)){36.37.38.//IftheincomingURIwasforalloftable339.case1:40.41.if(TextUtils.isEmpty(sortOrder))sortOrder=_IDASC;42.break;43.44.//IftheincomingURIwasforasinglerow45.case2:46.47./*48.*BecausethisURIwasforasinglerow,the_IDvaluepartis49.*present.GetthelastpathsegmentfromtheURI;thisisthe_IDvalue.-AndroidContentProvider*Then,appendthevaluetotheWHEREclauseforthequery51.*/52.selection=selection+_ID=uri.getLastPathSegment();53.break;54.55.default:56....57.//IftheURIisnotrecognized,youshoulddosomeerrorhandlinghere.58.}59.//callthecodetoactuallydothequery}ContentProviderquery()Retrievedatafromyourprovider.Usetheargumentstoselectthetabletoquery,therowsandcolumnstoreturn,andthesortorderoftheresult.ReturnthedataasaCursorobject.insert()Insertanewrowintoyourprovider.Usetheargumentstoselectthedestinationtableandtogetthecolumnvaluestouse.ReturnacontentURIforthenewly-insertedrow.update()Updateexistingrowsinyourprovider.Usetheargumentstoselectthetableandrowstoupdateandtogettheupdatedcolumnvalues.Returnthenumberofrowsupdated.delete()Deleterowsfromyourprovider.Usetheargumentstoselectthetableandtherowstodelete.Returnthenumberofrowsdeleted.getType()ReturntheMIMEtypecorrespondingtoacontentURI.ThismethodisdescribedinmoredetailinthesectionImplementingContentProviderMIMETypes.onCreate()Initializeyourprovider.TheAndroidsystemcallsthismethodimmediatelyafteritcreatesyourprovider.NoticethatyourproviderisnotcreateduntilaContentResolverobjecttriestoaccessit.SQLiteContentProviderSQLiteOpenHelperMainDatabaseHelpermain[java]viewplaincopyprint?-AndroidContentProvider=CREATETABLE+2.main+//Table'sname3.(+//Thecolumnsinthetable4._IDINTEGERPRIMARYKEY,+5.WORDTEXT6.FREQUENCYINTEGER+7.LOCALETEXT);.../**8.*Helperclassthatactuallycreatesandmanagestheprovider'sunderlyingdatarepository.9.*/protectedstaticfinalclassMainDatabaseHelperextendsSQLiteOpenHelper{10.11./*12.*Instantiatesanopenhelperfortheprovider'sSQLitedatarepository13.*Donotdodatabasecreationandupgradehere.14.*/15.MainDatabaseHelper(Contextcontext){16.super(context,DBNAME,null,1);17.}18.19./*20.*Createsthedatarepository.Thisiscalledwhentheproviderattemptstoopenthe21
本文标题:高级程序员修炼之道-Android培训系列课程之ContentProvider5
链接地址:https://www.777doc.com/doc-5239661 .html