Mga Tutorial sa Android para sa Mga Nagsisimula Bahagi-4: Nagbibigay ng Nilalaman



Tumatalakay sa tutorial na ito sa Android ang mga konsepto ng Tagabigay ng Nilalaman. Ito ay isang mahalagang bloke ng pagbuo ng Android, pinapabilis ang pagpapalitan ng data sa Android system.

Sa aming nakaraang mga tutorial sa Android para sa mga nagsisimula, tinalakay namin ang unang tatlong mga bloke ng gusali ng Android: Aktibidad , Nilalayon at Mga serbisyo . Pang-apat ang artikulong ito sa seryeng ito ng Mga Tutorial sa Android para sa mga nagsisimula at tinatalakay ang Tagabigay ng Nilalaman, na isa pang napakahalagang sangkap ng Android System.

Ang Tagapagbigay ng Nilalaman ay ang tagapamagitan ng iyong Android system, na nagpapadali sa pagpapalitan ng data sa pagitan ng iba't ibang mga application ng Android. Ipaalam sa amin makakuha ng kaunti sa mga detalye ng na sa Android tutorial.





Android Tutorial para sa mga nagsisimula-4 na Bonus: I-download ang Code ng Tagabigay ng Nilalaman dito . Gugustuhin mo ang code na ito sa sandaling dumaan ka sa tutorial! :)

[dl url = '#' class = 'eModal eModal-6 ″ title =' Download Code 'desc =' 'type =' 'align =' 'for =' download ']



Mga Tutorial sa Android: Nagbibigay ng Nilalaman

Pinapabilis ng Tagapagbigay ng Nilalaman ang pag-access sa isang gitnang tindahan ng data o warehouse upang payagan ang pagbabahagi ng data at pagmamanipula ng data sa iba't ibang mga application.

Narito ang ilang halimbawa ng mga default na Provider ng Nilalaman sa API ng Android system:

dumaan sa halaga at ipasa sa pamamagitan ng sangguniang java

Mga Tutorial sa Android: Mga Default na Provider ng Nilalaman sa Android system



Pinapayagan ng mga tagabigay ng nilalaman ang pagkuha ng gumagamit mula sa isang napapailalim na database. Pangkalahatan, ang Mga Naghahatid ng Nilalaman ay gumagamit ng SQLite upang mag-imbak ng napapailalim na database.

Gawin natin ang walang katuturang halimbawa ng mahusay na lumang application ng Facebook, na tumulong sa amin na gawing simple ang mga bagay sa nakaraang Mga Tutorial sa Android din!

Lahat ng mayroon ka sa ilang mga punto sa iyong buhay sa social networking, nag-upload ng isang larawan sa iyong timeline sa Facebook, tama! Paano mo ito nagagawa?

Sa pag-click sa Photo Button sa dingding, makakarating ka sa photo gallery. Mula doon maaari kang pumili ng isang larawan upang mai-upload.

Nabasa ang mga nakaraang artikulo ng Serye ng Mga Tutorial sa Android , alam mo ang tungkol sa Mga Aktibidad at Layunin samakatuwid, alam mo na ito ang nangyayari:

Ang iyong Facebook Wall ay isang 'GAWAIN'. Habang nag-click ka sa Photo Button, isang 'INTENT' ang naipasa, na nagpapahiwatig ng mensahe at magbubukas ang 'CONTENT PROVIDER' (Photo Gallery). Ang larawan ay na-upload gamit ang isang pag-upload sa network na 'SERVICE'.

Panoorin ang live na video na ito upang malaman kung paano gumagana ang Content Provider sa loob ng iyong Application sa Facebook.

Bakit kailangan ng Android System ng Mga Nagbibigay ng Nilalaman?

Ang pangangailangan para sa Mga Tagapagbigay ng Nilalaman ay lumitaw dahil ang database na nilikha sa isang application ay hindi nakikita ng isang pangalawang application.

Ito ay simple upang lumikha at mag-imbak ng database sa iba't ibang mga application gamit ang SQLite, subalit ang problema ay ito, isang database sa Android ay pribado sa application na lumilikha nito . Walang karaniwang lugar ng imbakan sa Android na maaaring ma-access ng bawat application. Samakatuwid, para sa iba't ibang mga application upang magamit ang isang database, ang sistema ng Android ay nangangailangan ng isang interface na nagbibigay-daan sa naturang inter-application at inter-proseso na pagpapalitan ng data. Dito maglaro ang content provider.

Kailangan ko ba talaga ng isang Tagapagbigay ng Nilalaman?

1) Ikaw hindi kailangang bumuo ng iyong sariling provider kung nais mo ng isang pribadong database para sa isang partikular na application (ang database na ito ay hindi maa-access sa mga application maliban sa isa na lumikha nito).

2) Gayunpaman, ikaw kailangan ng isang Custom na tagapagbigay upang magbigay ng mga pasadyang mungkahi sa paghahanap sa iyong sariling system ng aplikasyon.

3) Kakailanganin mo rin ang isang Tagapagbigay ng Nilalaman upang kopyahin at i-paste ang kumplikadong data mula sa iyong application sa iba pang mga application.

Ano ang mga pagpapatakbo na suportado ng isang Tagapagbigay ng Nilalaman?

Sinusuportahan ng mga tagabigay ng nilalaman ang mga sumusunod na pangunahing operasyon:

isa) Pagtatanong: Pagtatanong sa Tagapagbigay ng Nilalaman para sa lahat ng mga bagay, batay sa tinukoy na URI.

2) Tanggalin: Tinatanggal ang tinukoy na mga bagay mula sa database ng isang Tagapagbigay ng Nilalaman.

3) Update: Gumagawa ng mga pag-update sa mga bagay sa database.

4) Ipasok: Nagpapasok ng bagong object sa database.

Mga hakbang upang magsagawa ng isang operasyon sa Provider ng Nilalaman

Hakbang 1: Pag-access sa isang Nagbibigay ng Nilalaman

Nilalaman ng client ng ContentResolver ay ginagamit upang ma-access ang data mula sa Content Provider. Nakikipag-usap ito sa object ng provider, na tumatanggap naman ng kahilingan na mag-access sa data at ibabalik ang nais na mga resulta. Ang interface ng palitan ng data na ibinigay ng nagbibigay at nagbibigay ng client object ay nagbibigay-daan sa komunikasyon sa iba't ibang mga proseso / aplikasyon.

Ang application na kailangang i-access ang database ay kailangang ideklara ito at humiling ng mga pahintulot sa manifest file nito. Tatalakayin ito nang detalyado sa aming kasunod na mga tutorial sa Android.

Nilalaman URI

Ang Content URI ay isa sa mga argumento na ginamit upang makilala ang data sa isang provider. Mayroon itong apat na bahagi:

isa) Scheme: Ang scheme para sa provider ng nilalaman ay may isang pare-pareho na halaga: 'nilalaman'.

ano ang dax sa kapangyarihan bi

2) Awtoridad: Ito ang simbolikong pangalan ng provider, at natatangi para sa bawat isa. Ito ang paraan kung paano namin isinasama ang nais na tagabigay ng nilalaman mula sa isang listahan ng napakaraming.

3) Landas: Landas tumutulong na makilala ang kinakailangang data mula sa kumpletong database . Halimbawa, ang Tagabigay ng Nilalaman ng Log ng Call ay nag-iiba sa pagitan ng Mga Nawalang Tawag, Nakatanggap ng mga tawag atbp gamit ang iba't ibang mga landas.

4) ID: Hindi ito isang sapilitan na sangkap, at maaaring wala sa URI ngunit kung mayroon, dapat itong bilang. Halimbawa, kung nais mong i-access ang isang tukoy na file ng musika mula sa iyong Tagaloob ng Nilalaman ng Media, tutukuyin mo rin ang isang ID .

Ang proseso

Gamit ang awtoridad ng tagapagbigay, kinikilala ng ContentResolver ang tamang tagapagbigay ng nilalaman (dahil natatangi ang awtoridad para sa bawat nagbibigay ng nilalaman). Sa tapos na, ang bahagi ng path ng URI ay ginagamit upang piliin ang tamang (hiniling) talahanayan ng data. Kung sakaling mayroong isang ID, malalaman ng provider kung anong eksaktong data ang hinihiling.

Ang URI ay may dalawang uri:

Bilang karagdagan, ang mga URI ay maaaring magkaroon ng paglilimita rin ng impormasyon.

Hakbang 2: Paano kunin ang data mula sa isang Tagabigay ng Nilalaman

Kahit na ang ContentResolver ay may access sa talahanayan ng data ngayon, hindi nito makuha ang kinakailangang data maliban kung mayroon ang application 'Basahin ang pahintulot sa pag-access' para sa partikular na tagabigay. Ang pahintulot na ito ay tinukoy sa manifest file ng bawat tagabigay ng nilalaman.

Lahat ng iyon ay isang application (Na nais i-access ang database na ito) ang dapat gawin ay upang humiling ng pahintulot na ito.

Ngayon tulad ng tinalakay nang mas maaga sa tutorial sa Android na ito, maaaring isagawa ang apat na operasyon gamit ang isang nagbibigay ng nilalaman . Pupunta kami sa bawat isa.

QUERYING

Ngayon, na-access mo ang provider, at may pahintulot na makuha ang data mula rito. Ang susunod na hakbang ay upang buuin ang query upang humiling ng kinakailangang aksyon mula sa provider .

Narito ang mga argumento na ginamit habang nagtatanong:

isa) HATE : Gumagana ito nang eksakto tulad ng ipinaliwanag sa itaas.

ano ang pagsasama-sama sa java

2) Proyekto: Dapat ang query ibalik ang isang hanay ng mga haligi mula sa buong talahanayan ng database . Ito ay kilala bilang projection. Ang pagpasa na null ay ibabalik ang lahat ng mga haligi, na kung saan ay hindi mabisa.

3) Sugnay sa Pagpili: SA idedeklara ng filter kung aling mga hilera ang babalik , na-format bilang isang sugnay na SQL WHERE (hindi kasama ang WHERE mismo). Ang pagpasa ng null ay ibabalik ang lahat ng mga hilera para sa ibinigay na URI.

Halimbawa, kung nagpasok ka ng isang alpabeto (sabihin na 'P') sa haligi ng paghahanap ng iyong address book, ibabalik nito ang lahat ng mga detalye sa pakikipag-ugnay na nagsisimula sa 'P'. Gayunpaman, kung hindi ka naglalagay ng anumang bagay sa search bar, ang kumpletong listahan ng mga contact ay nakuha (ang sugnay sa pagpili ay nakatakda sa 'null' sa mga ganitong kaso).

4) Pagpipilian ng Pakikipag-usap: Maaari mong isama ang '? S' sa pagpipilian, na papalitan ng mga halagang mula sa selectArgs, sa pagkakasunud-sunod na lilitaw sa pagpipilian.

5) Pagsunud-sunod ng Order: SQL ORDER BY clause (hindi kasama ang ORDER NG sarili). Ang pagpasa na null ay kukunin ang mga resulta na maaaring hindi naayos.

HALIMBAWA NG CODE para sa Querying:

  • Naghahanap ng mga numero ng Telepono sa Mga contact
Cursor cursor = contentresolver.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () kung (count> 0) {String contactDetails = 'habang habang (cursor.moveToNext ()) { String haligiId = Mga contactContract.Contact._ID int cursorIndex = cursor.getColumnIndex (haligiId) String id = cursor.getString (cursorIndex) String name = cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts .ISCAYse = Integ) (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER)) kung (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKinds.Pa. , bagong String [] {id}, null) habang (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Telepono.NUMBER)) contactDetails + = 'Pangalan:' + pangalan + ', No Telepono:' + phoneNo + ''} phoneCursor.close ()}}}

INSERTION

Ipagpalagay natin na nais mong magsingit ng mga bagong contact sa iyong address book. Bagay sa MgaNaNgNaNgaNga Nilalaman ay ginagamit upang gawin ang mga insertions na ito. Ang mga susi ng object ng ContentValue at ang mga haligi ng Provider ng Nilalaman ay dapat tumugma upang makamit ito. Narito ang isang halimbawa para dito:

HALIMBAWA NG CODE PARA SA Pagpasok:

  • Ang operasyon ay upang magsingit ng bagong entry na may pangalang 'Rajnikant' at numero na '9988999888'
// Operation ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, null) .withValue (RawContacts.AC) ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReferensi (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE) .withValue 'StraturedName.CONTENT_ITEM_TYPE) .withValue' ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReferensi (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Telepono.CONTENT_ITEM_TYPE) .withValue (Telepono.N9B8, '9988.' , Telepono.TYPE_MOBILE). Build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

PAG-UPDATE

Upang mai-update ang isang nagbibigay ng nilalaman ang mga sumusunod na argumento ay ginagamit:

isa) HATE: Ang URI ng Nagbibigay ng Nilalaman

2) Mga Halaga ng Nilalaman: Naglalaman ito ng mga halagang pumapalit sa mayroon nang data.

3) Sugnay sa Pagpili: Makakatulong ito na piliin ang mga tukoy na talaan upang mai-update

4) Pagpipilian ng Pakikipag-usap: Maaari mong isama ang '? S' sa pagpipilian, na papalitan ng mga halagang mula sa selectArgs, sa pagkakasunud-sunod na lilitaw sa pagpipilian.

Muli, ang ang mga susi ng nilalamang Nilalaman ng Nilalaman ay dapat na tumutugma sa mga haligi sa Tagabigay ng Nilalaman kung hindi man, hindi magaganap ang pag-update.

HALIMBAWA NG CODE PARA SA Update:

  • Ina-update ang numero ng telepono kung saan ang pangalan ay 'Rajnikant'
String saan = Mga ContactContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newUpdate (ContactsContract.Data.CONTENT_URI) .withSelection (kung saan, params) .withValue (ContactsContract.CommonDataKinds. Telepono.NUMBER, “9876543210”). Build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

TANGGAL

Gumagamit ang pagtanggal ng parehong mga argumento tulad ng pag-update na may pagbubukod sa argumento ng ContentValues, na hindi kinakailangan dahil hindi magkakaroon ng mga kapalit na halaga.

HALIMBAWA NG CODE PARA SA pagtanggal:

  • Tanggalin ang Makipag-ugnay kung saan ang pangalan ay 'Rajnikant'
String saan = Mga ContactContract.Data.DISPLAY_NAME + '=? 'String [] params = new String [] {“Rajnikant”} ArrayList ops = new ArrayList () ops.add (ContentProviderOperation.newDelete (ContactsContract.RawContacts.CONTENT_URI) .withSelection (kung saan, params). Build ()) getContentResolver ( ) .applyBatch (ContactsContract. Awtoridad, mga op)

Sa kaso ng Ipasok ang pagpapatakbo, ang URI ay dapat na nakabatay sa direktoryo. Sa lahat ng iba pang mga kaso, ang mga URI ay maaaring batay sa ID o batay sa direktoryo.

Inaasahan namin Tutorial sa Android para sa mga nagsisimula: Bahagi 5 hindi masyadong mahirap intindihin! Tatalakayin pa namin ang higit pa tungkol sa Mga Nagbibigay ng Nilalaman sa Mga Susunod na Mga Tutorial sa Android. Masiyahan sa pag-aaral ng mga pangunahing kaalaman hanggang sa pagkatapos!

Mayroon ka bang mga pagdududa sa tutorial na ito sa Android? Tanungin Mo Kami

Maligayang Pag-aaral!

Ang mga sumusunod na mapagkukunan ay ginamit sa paglikha ng Android Tutorial na ito! Opisyal na Mga Developer ng Android , Edureka.in

Maaari mo ring magustuhan ang mga kaugnay na post na ito: