Vadnice za Android za začetnike, 4. del: Ponudnik vsebine



Ta vadnica za Android obravnava koncepte ponudnika vsebine. Je pomemben gradnik Androida, ki omogoča izmenjavo podatkov v sistemu Android.

V naših prejšnjih vajah za Android za začetnike smo razpravljali o prvih treh gradnikih sistema Android: Dejavnost , Namen in Storitve . Ta članek je četrti v tej seriji Vadnic za Android za začetnike in obravnava ponudnika vsebin, ki je še ena zelo pomembna komponenta sistema Android.

Content Provider je posrednik vašega sistema Android, ki omogoča izmenjavo podatkov med različnimi aplikacijami Android. Pojdimo malo v podrobnosti tega v tej vadnici za Android.





Vadnica za Android za začetnike-4 Bonus: Kodo ponudnika vsebine prenesite tukaj . To kodo boste želeli, ko boste prebrali vadnico! :)

[dl url = ”#” class = ”eModal eModal-6 ″ title =” Koda za prenos ”desc =” ”type =” ”align =” ”for =” download ”]



Vadnice za Android: ponudnik vsebine

Ponudnik vsebin olajša dostop do centralne shrambe ali skladišča podatkov, da omogoči skupno rabo podatkov in manipulacijo s podatki v različnih aplikacijah.

Tu je nekaj primerov privzetih ponudnikov vsebine v API-ju sistema Android:

Vadnice za Android: privzeti ponudniki vsebine v sistemu Android



Ti ponudniki vsebin omogočajo uporabniku abstrakcijo iz osnovne baze podatkov. Na splošno ponudniki vsebin uporabljajo SQLite za shranjevanje osnovne baze podatkov.

Vzemimo vedno koristen primer dobre stare Facebook aplikacije, ki nam je pomagala poenostaviti stvari tudi v prejšnjih vajah za Android!

kako uporabljati pakete v javi -

Vsi ste na neki točki svojega življenja v družabnih omrežjih naložili sliko na svojo Facebook časovnico, kajne! Kako si to naredil?

Ko na steni kliknete gumb Photo, pridete do galerije fotografij. Od tam lahko izberete fotografijo za nalaganje.

Po branju prejšnjih člankov Serija vadnic za Android , veste o dejavnostih in namenih, zato veste, da se zgodi to:

Vaš Facebook zid je 'DEJAVNOST'. Ko kliknete gumb za fotografijo, se prikaže sporočilo »NAMER«, ki sporoči sporočilo in odpre se »PONUDNIK VSEBINE« (Fotogalerija). Fotografija se naloži z omrežnim prenosom »SERVICE«.

Oglejte si ta video v živo, če želite vedeti, kako deluje ponudnik vsebine v vaši aplikaciji Facebook.

Zakaj sistem Android potrebuje ponudnike vsebine?

Potreba po ponudnikih vsebine se pojavi, ker zbirka podatkov, ustvarjena v eni aplikaciji, ni vidna drugi aplikaciji.

Z SQLite je enostavno ustvariti in shraniti bazo podatkov v različnih aplikacijah, vendar je težava v tem, baza podatkov v Androidu je zasebna za aplikacijo, ki jo ustvari . V Androidu ni skupnega prostora za shranjevanje, do katerega bi lahko dostopala vsaka aplikacija. Zato sistem Android za uporabo baze podatkov potrebuje vmesnik, ki omogoča tako izmenjavo podatkov med aplikacijami in med procesi. Tu pride ponudnik vsebin igrati.

Ali res potrebujem ponudnika vsebin?

1) Ti vam ni treba razvijati lastnega ponudnika, če želite zasebno bazo podatkov za določeno aplikacijo (ta zbirka podatkov ne bi bila dostopna samo aplikacijam, ki so jo ustvarile).

2) Ti pa potrebujete ponudnika po meri, ki bo ponudil predloge po meri v svojem sistemu prijav.

3) Potrebovali bi tudi ponudnika vsebin za kopiranje in lepljenje zapletenih podatkov iz vaše aplikacije v druge programe.

Katere operacije podpira ponudnik vsebine?

Ponudniki vsebin podpirajo naslednje osnovne operacije:

ena) Poizvedovanje: Poizveduje ponudnika vsebine za vse predmete na podlagi podanega URI-ja.

2) Izbriši: Izbriše določene predmete iz baze podatkov ponudnika vsebine.

3) Nadgradnja: Posodobi predmete v zbirki podatkov.

4) Vstavi: V bazo podatkov vstavi nov objekt.

Koraki za izvedbo operacije v ponudniku vsebine

1. korak: Dostop do ponudnika vsebine

Predmet odjemalca ContentResolver se uporablja za dostop do podatkov ponudnika vsebine. Komunicira z objektom ponudnika, ki nato sprejme zahtevo za dostop do podatkov in vrne želene rezultate. Vmesnik za izmenjavo podatkov, ki ga zagotavlja ponudnik in objekt odjemalca ponudnika, omogoča komunikacijo med različnimi procesi / aplikacijami.

Aplikacija, ki mora dostopati do baze podatkov, mora to prijaviti in zahtevati dovoljenja v svoji manifestni datoteki. O tem bi podrobno razpravljali v naslednjih vadnicah za Android.

URI vsebine

URI vsebine je eden od argumentov, ki se uporablja za identifikacijo podatkov pri ponudniku. Ima štiri dele:

ena) Shema: Shema za ponudnika vsebin ima konstantno vrednost: 'vsebina'.

ukaz java za zaključek programa

2) Organ: To je simbolično ime ponudnika in je za vsakega edinstveno. Tako na seznamu toliko ločimo želenega ponudnika vsebin.

3) Pot: Pot pomaga razlikovati zahtevane podatke od celotne baze podatkov . Ponudnik vsebine dnevnika klicev na primer razlikuje med neodgovorjenimi klici, prejetimi klici itd. Na različne poti.

4) ID: Ni obvezen sestavni del in morda ni prisoten v URI-ju, če pa je prisoten, mora biti številčen. Na primer, če želite do določene glasbene datoteke dostopati pri ponudniku medijske vsebine, določite tudi ID .

Postopek

Z uporabo pooblastila ponudnika ContentResolver identificira pravilnega ponudnika vsebine (saj je pooblastilo edinstveno za vsakega ponudnika vsebine). Po tem se komponenta poti URI uporabi za izbiro pravilne (zahtevane) podatkovne tabele. V primeru, da je ID prisoten, bi ponudnik vedel, katere natančne podatke se zahteva.

URI sta dve vrsti:

Poleg tega imajo lahko URI tudi omejujoče informacije.

2. korak: Kako pridobiti podatke od ponudnika vsebine

Čeprav ima ContentResolver zdaj dostop do podatkovne tabele, zahtevanih podatkov ne more pridobiti, razen če jih ima aplikacija “Dovoljenje za branje” za določenega ponudnika. To dovoljenje je določeno v datoteki manifesta vsakega ponudnika vsebine.

Vse to prijava (ki želi dostopati do te baze podatkov) kar morate storiti, je zahtevati to dovoljenje.

Kot smo že omenili v tej vadnici za Android, s ponudnikom vsebine je mogoče izvesti štiri operacije . Preučili bomo vsakega posebej.

VPRAŠANJE

Zdaj ste dostopali do ponudnika in imate dovoljenje za pridobivanje podatkov od njega. Naslednji korak je zgraditi poizvedbo in zahtevati zahtevano dejanje od ponudnika .

Tu so argumenti, uporabljeni med poizvedovanjem:

ena) SOVRAŽENJE : Deluje natančno tako, kot je razloženo zgoraj.

2) Projekcija: Poizvedba bi morala vrne niz stolpcev iz celotne tabele baze podatkov . To je znano kot projekcija. Če posredujete nič, se vrnejo vsi stolpci, kar je neučinkovito.

3) Izbirna klavzula: TO filter, ki določa, katere vrstice naj se vrnejo , oblikovan kot stavek SQL WHERE (razen same WHERE). Če posredujete nič, se vrnejo vse vrstice za dani URI.

Če na primer vnesete abecedo (recimo »P«) v iskalni stolpec vašega imenika, bo vrnil vse kontaktne podatke, začenši s »P«. Če pa v iskalno vrstico ne vnesete ničesar, se poišče celoten seznam stikov (v takih primerih je izbirna klavzula nastavljena na 'null').

4) Izbirni argument: V izbor lahko vključite »? S«, ki ga bodo nadomestile vrednosti iz selectionArgs, v vrstnem redu, kot so prikazane v izboru.

5) Razvrsti: Stavek SQL ORDER BY (razen samega ORDER BY). Če posredujete ničlo, se prikažejo rezultati, ki so morda neurejeni.

PRIMER KODE za poizvedovanje:

  • Iskanje telefonskih številk v imeniku
Kazalec kurzorja = contentresolver.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () if (count> 0) {String contactDetails = '' while (cursor.moveToNext ()) { String columnId = ContactsContract.Contacts._ID int cursorIndex = cursor.getColumnIndex (columnId) String id = cursor.getString (cursorIndex) Ime niza = cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.DISPLAY_NAMEContacts.DISPLAY_NAMEInt.sent. (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER)))) if (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKOND. , nov String [] {id}, null) while (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Name:' + ime + ', Telefonska številka:' + phoneNo + ''} phoneCursor.close ()}}}

INSERCIJA

Predpostavimo, da želite v svoj imenik vstaviti nove stike. ContentValues ​​objekt se uporablja za te vstavke. Da bi to dosegli, se morajo ujemati ključi predmeta ContentValue in stolpci ponudnika vsebine. Tu je primer za to:

KODA PRIMER VSTAVITVE:

  • Postopek je vstaviti nov vnos z imenom 'Rajnikant' in številko '9988999888'
// Operacija ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, nualta. ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TVAME. ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withV88, VAN.V8 , Phone.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

POSODOBITEV

Za posodobitev ponudnika vsebine se uporabljajo naslednji argumenti:

ena) SOVRAŽNJA: URI ponudnika vsebine

2) Vrednosti vsebine: Ta vsebuje vrednosti, ki bi nadomestile obstoječe podatke.

lahko z razredom tiskalnika odprete datoteko za pisanje in vanjo zapišete podatke.

3) Izbirna klavzula: To vam lahko pomaga pri izbiri določenih zapisov, ki jih želite posodobiti

4) Izbirni argument: V izbor lahko vključite »? S«, ki ga bodo nadomestile vrednosti iz selectionArgs, v vrstnem redu, kot so prikazane v izboru.

Še enkrat, tipke predmeta ContentValues ​​se morajo ujemati s stolpci v ponudniku vsebine v nasprotnem primeru do posodobitve ne bi prišlo.

PRIMER KODE za posodobitev:

  • Posodabljanje telefonske številke z imenom 'Rajnikant'
String where = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newUpdate (ContactsContract.Data.CONTENT_URI) .withSelection (kjer, params) .withValu (ContactsContract.Com. Phone.NUMBER, “9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

IZBRIS

Pri brisanju se uporabljajo enaki argumenti kot pri posodobitvi z izjemo argumenta ContentValues, ki ni obvezen, saj ne bo nobenih nadomeščenih vrednosti.

PRIMER KODE ZA Brisanje:

  • Izbrišite stik z imenom „Rajnikant“
String where = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newDelete (ContactsContract.RawContacts.CONTENT_URI) .withSelection (where, params) .build ()) getContent ) .applyBatch (ContactsContract.AUTHORITY, ops)

V primeru vstavljanja mora URI temeljiti na imeniku. V vseh drugih primerih lahko URI temeljijo na ID-ju ali na imeniku.

Upamo Vadnica za Android za začetnike: 5. del ni bilo preveč težko razumeti! O ponudnikih vsebine bomo razpravljali v nadaljnjih vajah za Android. Do takrat uživajte v učenju osnov!

Ali dvomite v tej vadnici za Android? Vprašajte nas.

Srečno učenje!

Pri ustvarjanju te vaje za Android so bili uporabljeni naslednji viri! Uradni razvijalci za Android , Edureka.in

Morda vam bodo všeč tudi te povezane objave: