- androiden indholdsudbydere

, indholdsudbyderen underleverancer data fra en enkelt ansøgning til andre på anmodning.sådanne anmodninger skal behandles i de metoder, som det contentresolver klasse.en indholdsudbyderen kan anvende forskellige metoder til at lagre data og oplysninger kan lagres i en database i filer, eller endog i et net.,,, contentprovider, nogle gange er det, der skal til for at udveksle data på tværs af ansøgninger.det er, hvor udbyderne bliver meget nyttigt.,, indholdsudbydere lad du centralisere indhold på et sted og har mange forskellige anvendelser, adgang til det efter behov.en indholdsudbyderen opfører sig meget om en database, hvor du kan sætte spørgsmålstegn ved det, redigere indholdet samt tilføje eller slette indhold ved hjælp af insert(), update(), delete(), og query() metoder.i de fleste tilfælde data lagres i en database, sqlite,., indholdsudbyderen er gennemført som en underklasse af, contentprovider, klasse og skal implementere et standardiseret sæt af api - grænseflader, der gør det muligt for andre ansøgninger til at udføre transaktioner. offentlige klasse min ansøgning omfatter contentprovider {}, indhold, uri 'er, at søge en indholdsudbyderen, - angive den forespørgsel snor i form af en uri, som har følgende format:, < præfiks >: //< myndighed > /< data_type > /< id > her er detaljerne i forskellige dele af uri &minus. det er altid en beskrivelse præfiks til indholdet: //myndighed angiver navnet på indholdsudbyderen, for eksempel, kontakter,,, - osv. for at give tredjemand indholdsudbydere, dette kan værefuldt kvalificeret navn, såsom, com.tutorialspoint.statusprovider, data_type angiver den type data, at denne leverandør leverer.for eksempel, hvis du får alle de kontakter fra, kontakter, indholdsudbyderen, så dataene vej ville være, og uri ville se ud, som om dette indhold: //kontakter /mennesker, id - angiver specifikke resultater anmodede om.for eksempel, hvis du leder efter nummer 5 i de kontakter, indholdsudbyderen så uri ville se ud, som om dette indhold: //kontakter /folk /5.skabe indholdsudbyderen, indebærer dette antal enkle skridt til at skabe deres egen indholdsudbyderen«.,,, for det første, du er nødt til at skabe en indholdsudbyderen klasse, der udvider, contentproviderbaseclass.,,, og du er nødt til at definere deres indholdsudbyderen uri adresse, som vil blive anvendt til at få adgang til indhold.,,, næste gang du vil være nødt til at skabe deres egen database for at holde indholdet.normalt androide anvendelser sqlite database og ramme skal tilsidesætte, oncreate(), metode, som vil bruge sqlite åben metode til at skabe eller åbne hjælper tjenesteyderens database.når ansøgningen er iværksat, oncreate(), kontaktperson for hver af sine leverandører af indhold er i hovedsagen tråd.,,, så du bliver nødt til at gennemføre indholdsudbyderen forespørgsler til at udføre forskellige database specifikke operationer,.,,,, endelig registrering af deres indhold udbyder i deres aktivitet fil med < udbyder > og tag,.,,, her er listen over de metoder, som man er nødt til at tilsidesætte i indholdsudbyderen klasse have din indholdsudbyderen arbejde:,, contentprovider,,,, oncreate(), denne metode kaldes, når tjenesteyderen er begyndt.,,,, query(), denne metode, modtager en anmodning fra en kunde.resultatet er vendt tilbage som en markør objekt.,,,, insert(), denne metode fastlægger en ny rekord i indholdsudbyderen«.,,,, delete(), denne metode sletter en eksisterende resultater fra indholdsudbyderen«.,,,, update(), denne metode ajourfører en eksisterende resultater fra indholdsudbyderen«.,,,, gettype(), denne metode giver mime - type af data på et givet uri.,,, f.eks. dette eksempel vil forklare, hvordan du skabe dit eget, contentprovider,.så lad os følge følgende foranstaltninger svarende til det, vi har fulgt, samtidig med at skabe, hej verden eksempel −,, skridt beskrivelse 1 de vil bruge androide studioide at skabe en androide, anvendelse og navn, det er min ansøgning under den pakke, com.example.my anvendelse, med tomme aktivitet.2 ændre vigtigste aktivitet fil, mainactivity.java at tilføje to nye metoder, onclickaddname(), og onclickretrievestudents(),.3, skabe en ny java - filen, studentsprovider.java, i den pakke, com.example.my anvendelse, til at definere deres faktiske leverandør og dertil knyttede metoder.4 registrere deres indhold udbyder i din, androidmanifest.xml, fil med < leverandør - /> tag 5 ændre misligholdelse indholdet af res /layout /activity_main.xml, fil at medtage en lille ved at tilføje de plader.6. ingen grund til at ændre string.xml.android studie tager sig af string.xml fil.7 løb anvendelsen at iværksætte androide emulator og kontrollere resultatet af ændringerne i ansøgningen.efter er indholdet af den ændrede vigtigste aktivitet fil src /com.example.my anvendelse /mainactivity -.denne dokumentation kan omfatte hver af de grundlæggende livscyklus metoder.vi har tilføjet to nye metoder, onclickaddname(), og onclickretrievestudents(), at håndtere brugerinteraktion med anvendelsen, pakke com.example.my anvendelse, import - android.net.uri; import android.os.bundle; import android.app.activity; import android.content.contentvalues; import android.content.cursorloader; import android.database.cursor; import android.view.menu; import android.view.view; import android.widget.edittext; import android.widget.toast; offentlige klasse mainactivity udvider aktivitet {@ - beskyttede tomrum oncreate (bundt savedinstancestate) (super. oncreate (savedinstancestate); setcontentview (r.layout. activity_main)} @ tilsidesætte offentlige boolean oncreateoptionsmenu (menu kortet) (getmenuinflater(). puste (r.menu.main menuen); tilbage.} offentlige tomrum onclickaddname (betragtning) (//tilføje en ny elev rekord contentvalues værdier = nye contentvalues(); værdier. (studentsprovider.name ((edittext) findviewbyid (r.id.edittext2)). gettext(). tostring()); værdier. (studentsprovider.grade ((edittext) findviewbyid (r.id.edittext3)). gettext(). tostring()); uri uri = getcontentresolver(). indsæt (studentsprovider.content_uri, værdier), skål. maketext (getbasecontext(), uri. tostring(), skål. length_long). show();} offentlige tomrum onclickretrievestudents (betragtning) (//få studerende optegnelser snor url = "content://com.exf.eks. udbyder. college /studerende "uri studerende = uri. analysere (url) markør c = managedquery (studerende, nul, nul, nul," navn "); hvis (c. movetofirst()) {gøre {skål. maketext (det c.getstring (c.getcolumnindex (studentsprovider. _id) +", "+ c.getstring (c.getcolumnindex (studentsprovider. navn)) +", "+ c.getstring (c.getcolumnindex (studentsprovider. klasse), skål. length_short). show();}, mens (c. movetonext())}}}, skabe nye fil studentsprovider.java under, com.example.my anvendelse, pakke og efter indholdet af src /com.example.my anvendelse /studentsprovider.java, −, pakke com.example.my application; import java.util.hashmap; import android.content.contentprovider; import android.content.contenturis; import android.content.contentvalues; import android.content.context; import android.content.urimatcher; import android.database.cursor; import android.database.sqlexception; import android.database.sqlite.sqlitedatabase; import android.database.sqlite.sqliteopenhelper; import android.database.sqlite.sqlitequerybuilder; import android.net.uri; import android.text.textutils; offentlige klasse studentsprovider udvider contentprovider (statisk sidste snor provider_name = "kom. f.eks. udbyder. college"; statiske endelig udg. snor url = "indhold: //" + provider_name + "studerende"; statiske endelige uri content_uri = uri. analysere (url); statiskesidste snor _id = "_id"; statiske sidste snor navn = "navn"; statiske sidste snor - = "kvalitet" menig static hashmap < kæde, kæde > students_projection_map; statiske endelige int studerende = 1; statiske endelige int student_id = 2; statiske endelige urimatcher urimatcher; statiske (urimatcher = ny urimatcher (urimatcher. no_match); urimatcher. adduri (provider_name "studerende", studerende); urimatcher. adduri (provider_name "studerende /#", student_id)} /* * * database specifikke konstant erklæringer * /private sqlitedatabase db; statiske sidste snor database_name = "universitet"; statiske sidste snor students_table_name = "studerende"; statiske endelige int database_version = 1; statiske sidste snorcreate_db_table = "skabe tabel" + students_table_name + "(_id heltal primære nøgle autoincrement" + "navn tekst ikke er" + "klasse tekst ikke er)" /* * * hjælper klasse, der rent faktisk skaber og forvalter * tjenesteyderens underliggende datalageret.* /menig static klasse databasehelper udvider sqliteopenhelper {databasehelper (forbindelse forbindelse) (super - sammenhæng, database_name, nul, database_version)} @ tilsidesætte offentlige tomrum oncreate (sqlitedatabase db) (db. execsql (create_db_table)} @ tilsidesætte offentlige tomrum onupgrade (sqlitedatabase db, int tidligere version, int newversion) (db. execsql ("drop tabel findes der" + students_table_name); oncreate (db)}} @ tilsidesætte offentlige boolean oncreate() {forbindelse forbindelse = getcontext(); databasehelper dbhelper = nye databasehelper (baggrund) /* * * skabe en database, som udløser skrive kan dens * creation, hvis det ikke allerede findes.* /db = dbhelper. getwritabledatabase(); afkast (db = = null)?falsk: sandt.} @ tilsidesætte offentlige uri indsæt (uri uri, contentvalues værdier) (* * * tilføje en ny elev rekord * /lang rowid = db. indsæt (students_table_name "," værdier) /* * * hvis resultater er tilsat med * /hvis (rowid> 0) (uri _uri = contenturis. withappendedid (content_uri, rowid); getcontext(). getcontentresolver(). notifychange (_uri, null); tilbage _uri;} kaste nyt sqlexception ("ikke at tilføje en rekord i" + uri)} @ tilsidesætte offentlige markør forespørgsel (uri uri, snor [] projektion, streng udvælgelse, snor [] selectionargs, - sortorder) (sqlitequerybuilder qb = nye sqlitequerybuilder(); qb.settables(students_table_name) skift (urimatcher. match (uri)) (sag studerende: qb. setprojectionmap (students_projection_map); pause, sag student_id: qb. appendwhere (_id + "= =" + uri. getpathsegments(). kom (1); bryde; default: smid nye illegalargumentexception ("ukendt uri" + uri);} hvis (sortorder = = for



Previous:
Next Page: