Android-oppaat aloittelijoille Osa 4: Sisällöntarjoaja



Tässä Android-opetusohjelmassa käsitellään sisällöntarjoajan käsitteitä. Se on tärkeä Android-rakennusosa, joka helpottaa tietojenvaihtoa Android-järjestelmässä.

Edellisissä aloittelijoille suunnatuissa Android-oppaissamme keskustelimme Androidin kolmesta ensimmäisestä rakennuspalikasta: Toiminta , Tahallisuus ja Palvelut . Tämä artikkeli on neljäs tässä aloittelijoille tarkoitetussa Android-oppaiden sarjassa, ja siinä käsitellään sisällöntarjoajaa, joka on toinen erittäin tärkeä osa Android-järjestelmää.

Sisällöntarjoaja on Android-järjestelmän välittäjä, joka helpottaa tietojenvaihtoa eri Android-sovellusten välillä. Anna meidän perehtyä hieman yksityiskohtiin tässä Android-opetusohjelmassa.





Android-opetusohjelma aloittelijoille - 4 bonus: Lataa sisällöntarjoajan koodi täältä . Haluat tämän koodin, kun olet käynyt läpi opetusohjelman! :)

[dl url = ”#” class = ”eModal eModal-6 ″ title =” Latauskoodi ”desc =” ”type =” ”align =” ”for =” lataa ”]



Android-oppaat: Sisällöntarjoaja

Sisällöntarjoaja helpottaa pääsyä keskustietovarastoon tai -varastoon tietojen jakamisen ja tietojen käsittelyn mahdollistamiseksi eri sovelluksissa.

Tässä on muutamia esimerkkejä oletussisällöntarjoajista Android-järjestelmän sovellusliittymässä:

Android-oppaat: Oletussisällöntuottajat Android-järjestelmässä



Nämä sisällöntuottajat sallivat käyttäjän ottaa abstraktin taustalla olevasta tietokannasta. Yleensä sisällöntuottajat käyttävät SQLiteä taustalla olevan tietokannan tallentamiseen.

Otetaanpa aina hyödyllinen esimerkki vanhasta hyvästä Facebook-sovelluksesta, joka on auttanut meitä yksinkertaistamaan asioita myös aiemmissa Android-oppaissa!

Kaikki teistä ovat jossain vaiheessa sosiaalisen verkostoitumisen elämääsi ladanneet kuvan Facebook-aikajanalle, eikö! Miten teet sen?

Napsauttamalla valokuvapainiketta seinällä pääset kuvagalleriaan. Sieltä voit valita ladattavan kuvan.

Luettuani edelliset artikkelit Android-oppaat -sarja , tiedät siis toiminnoista ja tarkoituksista, joten tiedät, että näin tapahtuu:

Facebook-seinäsi on 'TOIMINTA'. Kun napsautat valokuvapainiketta, 'INTENT' välitetään, joka välittää viestin ja 'CONTENT PROVIDER' (valokuvagalleria) avautuu. Kuva ladataan verkkolatauksella 'SERVICE'.

Katso tämä live-video saadaksesi tietää, miten sisällöntarjoaja toimii Facebook-sovelluksessasi.

Miksi Android-järjestelmä tarvitsee sisällöntarjoajia?

Tarve sisällöntarjoajille syntyy, koska yhdessä sovelluksessa luotu tietokanta ei näy toiselle sovellukselle.

Tietokannan luominen ja tallentaminen eri sovelluksiin on helppoa SQLite-sovelluksen avulla, mutta ongelmana on tämä, Android-tietokanta on yksityinen sitä luovalle sovellukselle . Androidissa ei ole yhteistä tallennustilaa, jota kaikki sovellukset voivat käyttää. Siksi, jotta eri sovellukset voivat käyttää tietokantaa, Android-järjestelmä tarvitsee käyttöliittymän, joka sallii tällaisen sovellusten välisen ja prosessien välisen tiedonvaihdon. Täällä sisällöntarjoaja tulee pelaamaan.

Tarvitsenko todella sisällöntarjoajaa?

1) Sinä sinun ei tarvitse kehittää omaa palveluntarjoajaasi, jos haluat yksityisen tietokannan tietylle sovellukselle (tämä tietokanta ei olisi muiden sovellusten kuin sen luovan sovelluksen käytettävissä).

2) Sinä kuitenkin tarvitsevat mukautetun palveluntarjoajan tarjoamaan mukautettuja hakuehdotuksia omassa sovellusjärjestelmässäsi.

3) Tarvitset myös sisällöntarjoajan kopioida ja liittää monimutkaisia ​​tietoja sovelluksestasi muihin sovelluksiin.

Mitä toimintoja Sisällöntarjoaja tukee?

Sisällöntuottajat tukevat seuraavia perustoimintoja:

yksi) Kysely: Kyselee kaikkien objektien sisällöntarjoajaa määritetyn URI: n perusteella.

2) Poistaa: Poistaa määritetyt objektit sisällöntarjoajan tietokannasta.

3) Päivittää: Päivittää tietokannan objektit.

4) Lisää: Lisää uuden objektin tietokantaan.

Vaiheet toiminnon suorittamiseksi Sisällöntuottajassa

Vaihe 1: Sisällöntarjoajan käyttäminen

ContentResolver-asiakasobjekti käytetään tietojen toimittamiseen Sisällöntarjoajalta. Se kommunikoi palveluntarjoajan objektin kanssa, joka puolestaan ​​hyväksyy pyynnön saada tietoja ja palauttaa halutut tulokset. Palveluntarjoajan ja palveluntarjoajan asiakasobjektin tarjoama tiedonsiirtoliitäntä mahdollistaa viestinnän eri prosessien / sovellusten välillä.

Sovelluksen, jonka on käytettävä tietokantaa, on ilmoitettava tämä ja pyydettävä käyttöoikeuksia manifestitiedostoonsa. Tästä keskustellaan yksityiskohtaisesti seuraavissa Android-opetusohjelmissamme.

Sisällön URI

Sisällön URI on yksi argumenteista, joita käytetään palveluntarjoajan tietojen tunnistamiseen. Siinä on neljä osaa:

yksi) Kaavio: Sisällöntuottajan mallilla on vakioarvo: 'sisältö'.

2) Viranomainen: Se on palveluntarjoajan symbolinen nimi, ja se on yksilöllinen jokaiselle. Näin erotellaan haluttu sisällöntarjoaja niin monien luettelosta.

3) Polku: Polku auttaa erottamaan vaaditut tiedot täydestä tietokannasta . Esimerkiksi puhelulokin sisällöntarjoaja erottaa vastaamattomat puhelut, vastaanotetut puhelut jne. Käyttämällä eri polkuja.

4) Tunnus: Se ei ole pakollinen komponentti, eikä sitä välttämättä ole URI: ssä, mutta jos se on olemassa, sen on oltava numeerinen. Esimerkiksi, jos haluat käyttää tiettyä musiikkitiedostoa mediasisällön tarjoajalta, määritä myös tunnus .

Prosessi

Palveluntarjoajan viranomaisen avulla ContentResolver tunnistaa oikean sisällöntarjoajan (koska valtuudet ovat yksilölliset jokaiselle sisällöntuottajalle). Tämän jälkeen URI-polun komponenttia käytetään valitsemaan oikea (pyydetty) tietotaulukko. Jos henkilöllisyystodistusta on läsnä, palveluntarjoaja tietää, mitä tarkkoja tietoja pyydetään.

kuinka asentaa php Windows 7: een

URI-tyypit ovat kahta tyyppiä:

Lisäksi URI: lla voi olla myös rajoittavia tietoja.

Vaihe 2: Kuinka hakea tietoja sisällöntarjoajalta

Vaikka ContentResolverilla on nyt pääsy tietotaulukkoon, se ei voi hakea vaadittuja tietoja, ellei sovelluksella ole 'Lukuoikeus' kyseiselle palveluntarjoajalle. Tämä lupa on määritelty kunkin sisällöntarjoajan luettelotiedostossa.

Kaikki tämä sovellus (joka haluaa käyttää tätä tietokantaa) täytyy tehdä, on pyytää tätä lupaa.

Nyt, kuten aiemmin käsiteltiin tässä Android-opetusohjelmassa, neljä operaatiota voidaan suorittaa sisällöntarjoajan avulla . Käymme läpi kukin yksitellen.

Kysely

Nyt olet käyttänyt palveluntarjoajaa ja sinulla on lupa hakea tietoja siitä. Seuraava askel on luo kysely pyytääkseen tarvittavia toimia palveluntarjoajalta .

Tässä ovat kyselyssä käytetyt argumentit:

yksi) VIHAA : Se toimii täsmälleen kuten edellä on selitetty.

2) Projektio: Kyselyn pitäisi palauta joukko sarakkeita koko tietokantataulukosta . Tätä kutsutaan projektioksi. Nollaaminen palauttaa kaikki sarakkeet, mikä on tehotonta.

3) Valintalauseke: TO suodatin, joka ilmoittaa palautettavat rivit , muotoiltu SQL WHERE -lausekkeeksi (pois lukien WHERE itse). Nollan palauttaminen palauttaa kaikki annetun URI: n rivit.

Esimerkiksi, jos kirjoitat aakkosen (sano ”P”) osoitekirjasi hakusarakkeeseen, se palauttaa kaikki ”P” -alkuiset yhteystiedot. Jos et kuitenkaan kirjoita mitään hakupalkkiin, haetaan täydellinen luettelo yhteystiedoista (valintalauseke on tällöin nolla).

4) Valintaargumentti: Voit sisällyttää valintaan ”? S”, jotka korvataan selectionArgs: n arvoilla siinä järjestyksessä kuin ne näkyvät valinnassa.

5) Lajittelujärjestys: SQL ORDER BY -lauseke (pois lukien ORDER BY itse). Nollaaminen noutaa tulokset, jotka saattavat olla järjestämättömiä.

KOODIESIMERKKI kyselylle:

  • Puhelinnumeroiden etsiminen Yhteystiedoista
Kohdistin kohdistin = contentresolver.query (YhteystiedotContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () if (count> 0) {String contactDetails = '' while (cursor.moveToNext ()) { Merkkijono sarakeId = YhteystiedotContract.Contacts._ID int cursorIndex = cursor.getColumnIndex (columnId) Merkkijono id = cursor.getString (cursorIndex) Merkkijono nimi = cursor.getString (kohdistin .getColumnIndex (YhteystiedotContract.Contacts.DIS (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER))) if (numCount> 0) {Kohdistin phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null? CommonDataKULJETTU? null, CommonDataK , uusi merkkijono [] {id}, null) while (puhelinKursori.moveToNext ()) {Merkkijono phoneNo = puhelinCursor.getString (puhelinCursor .getColumnIndex (YhteystiedotContract.CommonDataKinds. Puhelin.NUMBER)) contactDetails + = 'Nimi: + nimi + ', Puhelinnumero:' + phoneNo + ''} phoneCursor.close ()}}}

LISÄYS

Oletetaan, että haluat lisätä uusia yhteystietoja osoitekirjaasi. ContentValues-objekti käytetään näiden lisäysten tekemiseen. Tämän saavuttamiseksi ContentValue-objektiavainten ja Sisällöntarjoajan sarakkeiden on vastattava toisiaan. Tässä on esimerkki tästä:

KOODIESIMERKKI lisättäväksi:

  • Toimenpiteenä on lisätä uusi merkintä nimellä “Rajnikant” ja numerolla “9988999888”.
// Operation ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, null) .withValue (RawValue). ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPIS (Rajoitettu) (Rajoitettu) .withV. ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue (Phone.NUMBER (Phone.NUMBER) (withValue). , Puhelin.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

PÄIVITTÄMINEN

Sisällöntarjoajan päivittämiseen käytetään seuraavia argumentteja:

yksi) VIHAA: Sisällöntarjoajan URI

2) Sisältöarvot: Tämä sisältää arvot, jotka korvaavat nykyiset tiedot.

3) Valintalauseke: Tämä voi auttaa valitsemaan tietyt päivitettävät tietueet

4) Valintaargumentti: Voit sisällyttää valintaan ”? S”, jotka korvataan selectionArgs: n arvoilla siinä järjestyksessä kuin ne näkyvät valinnassa.

Jälleen kerran, ContentValues-objektin avainten on vastattava Sisällöntarjoajan sarakkeita muuten päivitystä ei tapahtuisi.

KOODIESIMERKKI päivitystä varten:

  • Päivitetään puhelinnumeroa, jonka nimi on Rajnikant
Merkkijono missä = ContactsContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {'Rajnikant'} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newUpdate (ContactsContract.Data.CONTENT_URI) .withSelection (where, params) .withValue (ContactsContract.Common. PuhelinNUMBER, “9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

POISTAMINEN

Poisto käyttää samoja argumentteja kuin päivitys, paitsi ContentValues-argumentti, jota ei vaadita, koska korvaavia arvoja ei tule olemaan.

Koodiesimerkki poistettavaksi:

  • Poista yhteyshenkilö, jonka nimi on “Rajnikant”
Merkkijono missä = 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 ()) getContentResolver ) .applyBatch (ContactsContract.AUTHORITY, ops)

Jos kyseessä on lisäysoperaatio, URI: n on oltava hakemistopohjainen. Kaikissa muissa tapauksissa URI: t voivat olla joko ID- tai hakemistopohjaisia.

Toivomme Android-opetus aloittelijoille: Osa 5 ei ollut liian vaikea ymmärtää! Keskustelemme lisää sisällöntarjoajista seuraavissa Android-opetusohjelmissa. Nauti perusasioiden oppimisesta siihen asti!

Onko sinulla epäilyksiä tässä Android-opetusohjelmassa? Kysy meiltä.

Hyvää oppimista!

Seuraavia resursseja käytettiin tämän Android-opetusohjelman luomisessa! Viralliset Android-kehittäjät , Edureka.in

Saatat myös pitää näistä aiheeseen liittyvistä viesteistä: