Android apmācības iesācējiem, 4. daļa: satura nodrošinātājs



Šajā Android apmācībā ir apspriestas satura nodrošinātāja koncepcijas. Tas ir svarīgs Android pamatelements, kas atvieglo datu apmaiņu Android sistēmā.

Iepriekšējās Android apmācībās iesācējiem mēs apspriedām pirmos trīs Android veidojošos elementus: Darbība , Nodoms un Pakalpojumi . Šis raksts ir ceturtais šajā Android apmācību sērijā iesācējiem un apspriež satura nodrošinātāju, kas ir vēl viena ļoti svarīga Android sistēmas sastāvdaļa.

Satura nodrošinātājs ir jūsu Android sistēmas starpnieks, kas atvieglo datu apmaiņu starp dažādām Android lietojumprogrammām. Ļaujiet mums nedaudz iedziļināties šajā Android apmācībā.





Android apmācība iesācējiem - 4 bonuss: Lejupielādējiet satura nodrošinātāja kodu šeit . Jūs vēlaties šo kodu, kad esat izgājis apmācību! :)

[dl url = ”#” class = ”eModal eModal-6” title = ”Lejupielādes kods” desc = ”” type = ”” align = ”” for = ”lejupielādēt”]



Android apmācības: satura nodrošinātājs

Satura nodrošinātājs atvieglo piekļuvi centrālajam datu krātuvei vai noliktavai, lai ļautu koplietot datus un manipulēt ar tām dažādās lietojumprogrammās.

Šeit ir daži noklusējuma satura nodrošinātāju piemēri Android sistēmas API:

Android konsultācijas: noklusējuma satura nodrošinātāji Android sistēmā



Šie satura nodrošinātāji ļauj lietotājam abstrahēties no pamatā esošās datu bāzes. Parasti satura nodrošinātāji pamatā esošās datu bāzes glabāšanai izmanto SQLite.

Ņemsim vienmēr noderīgo vecās labās Facebook lietojumprogrammas piemēru, kas mums palīdzēja vienkāršot lietas arī iepriekšējās Android apmācībās!

Visi no jums kādā brīdī savā sociālo tīklu dzīvē ir augšupielādējuši attēlu savā Facebook laika skalā, vai ne! Kā tu to dari?

Noklikšķinot uz pogas Foto, kas atrodas uz sienas, jūs nokļūstat fotoattēlu galerijā. No turienes jūs varat izvēlēties augšupielādējamo fotoattēlu.

Iepazinušies ar iepriekšējiem Android apmācību sērija , jūs zināt par aktivitātēm un nodomiem, tāpēc zināt, ka tas notiek šādi:

pitons kas ir __init__

Jūsu Facebook siena ir “AKTIVITĀTE”. Noklikšķinot uz pogas Fotoattēls, tiek nodots “INTENT”, kas nosūta ziņojumu, un tiek atvērts “CONTENT PROVIDER” (Foto galerija). Fotoattēls tiek augšupielādēts, izmantojot tīkla augšupielādi “SERVICE”.

Noskatieties šo tiešraides video, lai uzzinātu, kā satura nodrošinātājs darbojas jūsu Facebook lietojumprogrammā.

Kāpēc Android sistēmai ir nepieciešami satura nodrošinātāji?

Nepieciešamība pēc satura nodrošinātājiem rodas tāpēc, ka vienā lietojumprogrammā izveidotā datu bāze nav redzama otrai lietojumprogrammai.

Datu bāzes izveidošana un glabāšana dažādās lietojumprogrammās, izmantojot SQLite, ir vienkārša, tomēr problēma ir šī, Android datu bāze ir privāta lietojumprogrammai, kas to izveido . Android ierīcē nav kopīgas krātuves zonas, kurai varētu piekļūt katra lietojumprogramma. Tādēļ, lai dažādas lietojumprogrammas varētu izmantot datu bāzi, Android sistēmai ir nepieciešama saskarne, kas ļauj veikt šādu datu apmaiņu starp lietojumprogrammām un starpprocesiem. Šeit spēlē satura nodrošinātājs.

Vai man tiešām ir nepieciešams satura nodrošinātājs?

1) Jūs nav nepieciešams izveidot savu pakalpojumu sniedzēju, ja vēlaties privātu datu bāzi konkrētai lietojumprogrammai (šī datu bāze nebūtu pieejama citām lietojumprogrammām, izņemot to, kas to izveidoja).

2) Jūs tomēr nepieciešams pielāgots pakalpojumu sniedzējs, lai sniegtu pielāgotus meklēšanas ieteikumus savā pieteikšanās sistēmā.

3) Jums būtu nepieciešams arī satura nodrošinātājs lai kopētu un ielīmētu sarežģītus datus no lietojumprogrammas uz citām lietojumprogrammām.

Kādas darbības atbalsta satura nodrošinātājs?

Satura nodrošinātāji atbalsta šādas pamatdarbības:

viens) Vaicājums: Pieprasa satura nodrošinātāju visiem objektiem, pamatojoties uz norādīto URI.

2) Dzēst: Izdzēš norādītos objektus no satura nodrošinātāja datu bāzes.

3) Atjaunināt: Veic atjauninājumus datu bāzē esošajiem objektiem.

4) Ievietot: Ievieto jaunu objektu datu bāzē.

Darbības satura nodrošinātājā

1. darbība: piekļuve satura nodrošinātājam

ContentResolver klienta objekts tiek izmantots, lai piekļūtu datiem no satura nodrošinātāja. Tas sazinās ar pakalpojumu sniedzēja objektu, kas savukārt pieņem pieprasījumu piekļūt datiem un atgriež vēlamos rezultātus. Datu apmaiņas saskarne, ko nodrošina pakalpojumu sniedzējs un nodrošinātājs klienta objekts, ļauj sazināties dažādos procesos / lietojumprogrammās.

Lietojumprogrammai, kurai jāpiekļūst datu bāzei, tas ir jāpaziņo un jāpieprasa atļaujas manifestā. Tas tiks detalizēti apspriests mūsu turpmākajās Android apmācībās.

ms sql apmācības iesācējiem

Satura URI

Satura URI ir viens no argumentiem, ko izmanto, lai identificētu datus pakalpojumu sniedzējā. Tam ir četras daļas:

viens) Shēma: Satura nodrošinātāja shēmai ir nemainīga vērtība: “saturs”.

2) Iestāde: Tas ir pakalpojumu sniedzēja simboliskais nosaukums un katram ir unikāls. Tā mēs izceļam vēlamo satura nodrošinātāju no tik daudzo personu saraksta.

3) Ceļš: Ceļš palīdz atšķirt nepieciešamos datus no pilnīgas datu bāzes . Piemēram, zvanu žurnāla satura nodrošinātājs, izmantojot dažādus ceļus, atšķir neatbildētos zvanus, saņemtos zvanus utt.

4) ID: Tas nav obligāts komponents, un tas var nebūt URI, bet, ja tāds ir, tam jābūt skaitliskam. Piemēram, ja vēlaties piekļūt noteiktam mūzikas failam no sava multivides satura nodrošinātāja, norādiet arī ID .

Process

Izmantojot nodrošinātāja autoritāti, ContentResolver identificē pareizo satura nodrošinātāju (jo pilnvaras katram satura nodrošinātājam ir unikālas). Pēc tam URI ceļa komponents tiek izmantots, lai izvēlētos pareizo (pieprasīto) datu tabulu. Ja ir ID, pakalpojumu sniedzējs zinātu, kādi precīzi dati tiek pieprasīti.

URI ir divu veidu:

Turklāt URI var būt arī ierobežojoša informācija.

2. darbība: kā iegūt datus no satura nodrošinātāja

Kaut arī ContentResolver tagad ir piekļuve datu tabulai, tā nevar izgūt nepieciešamos datus, ja vien lietojumprogrammai nav “Lasīšanas piekļuves atļauja” konkrētajam pakalpojumu sniedzējam. Šī atļauja ir definēta katra satura nodrošinātāja manifesta failā.

Viss, kas ir programma (kas vēlas piekļūt šai datubāzei) ir jāpieprasa šī atļauja.

Tagad, kā iepriekš tika apspriests šajā Android apmācībā, izmantojot satura nodrošinātāju, var veikt četras darbības . Mēs iesim pāri katram pa vienam.

vesela skaitļa pitona reversie cipari

VAJADZĪBA

Tagad esat piekļuvis pakalpojumu sniedzējam un jums ir atļauja no tā izgūt datus. Nākamais solis ir izveidojiet vaicājumu, lai pieprasītu nepieciešamo darbību no nodrošinātāja .

Šeit ir vaicājuma laikā izmantotie argumenti:

viens) NĪTS : Tas darbojas tieši tā, kā paskaidrots iepriekš.

2) Projekcija: Vaicājumam vajadzētu atgriezt kolonnu kopu no visas datu bāzes tabulas . To sauc par projekciju. Iet uz nulli tiks atgrieztas visas kolonnas, kas ir neefektīvi.

3) Atlases klauzula: TO filtrs, paziņojot, kuras rindas atgriezties , formatēts kā SQL WHERE klauzula (izņemot pašu WHERE). Ja nodos nulli, tiks atgrieztas visas norādītā URI rindas.

Piemēram, ja adrešu grāmatas meklēšanas slejā ievadāt alfabētu (teiksim “P”), tas atgriezīs visu kontaktinformāciju, kas sākas ar “P”. Tomēr, ja meklēšanas joslā neko neievadāt, tiek izgūts pilns kontaktu saraksts (šādos gadījumos atlases klauzula ir iestatīta uz “null”).

4) Atlases arguments: Jūs varat iekļaut “? S” atlasē, kas tiks aizstātas ar SELECTArgs vērtībām tādā secībā, kādā tās parādās atlasē.

5) Šķirošanas secība: SQL klauzula ORDER BY (izņemot pašu ORDER). Nododot nulli, tiks iegūti rezultāti, kas, iespējams, nav sakārtoti.

KODA PIEMĒRS vaicājumiem:

  • Tālruņu numuru meklēšana mapē Kontakti
Kursora kursors = contentresolver.query (ContactsContract.Contacts.CONTENT_URI, null, null, null, null) int count = cursor.getCount () if (skaits> 0) {String contactDetails = '' while (cursor.moveToNext ()) { String columnId = ContactsContract.Contacts._ID int cursorIndex = cursor.getColumnIndex (columnId) String id = cursor.getString (cursorIndex) String name = cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.DIS Integ.Contacts.DIS (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER))) if (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null? CommonDataKIN , jauna virkne [] {id}, null) while (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Nosaukums:' + vārds + ', Tālruņa numurs:' + phoneNo + ''} phoneCursor.close ()}}}

IEVADĪŠANA

Pieņemsim, ka vēlaties savā adreses grāmatā ievietot jaunus kontaktus. Objekts ContentValues tiek izmantots, lai veiktu šīs ievietošanas. Lai to panāktu, objekta ContentValue atslēgām un Satura nodrošinātāja kolonnām ir jāsakrīt. Lūk, piemērs tam:

KODA PIEMĒRS ievietošanai:

  • Darbība ir ievietot jaunu ierakstu ar nosaukumu “Rajnikant” un numuru “9988999888”
// Operation ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, null) .WallValue (RawValue). ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONENT_ITEM_NAME_DEVIS (Rajons) (Rajons (Rajons) ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .withValue (Phone.Nr.Value (Phone.Name). , Tālrunis.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

ATJAUNINĀŠANA

Lai atjauninātu satura nodrošinātāju, tiek izmantoti šādi argumenti:

viens) NĪTS: Satura nodrošinātāja URI

2) ContentValues: Tajā ir vērtības, kas aizstātu esošos datus.

3) Atlases klauzula: Tas var palīdzēt izvēlēties konkrētos atjaunojamos ierakstus

4) Atlases arguments: Jūs varat iekļaut “? S” atlasē, kas tiks aizstātas ar SELECTArgs vērtībām tādā secībā, kādā tās parādās atlasē.

Vēlreiz Objekta ContentValues ​​atslēgām jāatbilst kolonnām Satura nodrošinātājā pretējā gadījumā atjauninājums nenotiktu.

Atjaunināšanas koda piemērs:

  • Tālruņa numura atjaunināšana, ja vārds ir “Rajnikant”
Virkne kur = 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. Phone.NUMBER, “9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

DZĒŠANA

Dzēšanā tiek izmantoti tie paši argumenti kā atjauninājumā, izņemot argumentu ContentValues, kas nav nepieciešams, jo tajā nebūs aizstājamu vērtību.

KODĒŠANAS PIEMĒRS dzēšanai:

  • Dzēsiet kontaktu, kura vārds ir “Rajnikant”
Virkne kur = 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)

Ievietošanas operācijas gadījumā URI jābūt balstītam uz direktoriju. Visos pārējos gadījumos URI var būt vai nu ID, vai direktoriju pamatā.

Mēs ceram Android apmācība iesācējiem: 5. daļa nebija pārāk grūti saprast! Vairāk par satura nodrošinātājiem mēs apspriedīsim turpmākajās Android apmācībās. Izbaudiet pamatu apgūšanu līdz tam laikam!

Vai jums ir kādas šaubas par šo Android apmācību? Jautājiet mums.

Laimīgu mācīšanos!

Šīs Android apmācības izveidē tika izmantoti šādi resursi! Oficiālie Android izstrādātāji , Edureka.in

Jums var patikt arī šīs saistītās ziņas: