Tutoriale Android pentru începători Partea 4: Furnizor de conținut



Acest tutorial Android discută conceptele furnizorului de conținut. Este un element important al Android, facilitând schimbul de date în sistemul Android.

În tutorialele noastre Android anterioare pentru începători, am discutat despre primele trei blocuri de bază ale Android: Activitate , Intenție și Servicii . Acest articol este al patrulea din această serie de tutoriale Android pentru începători și discută despre Furnizorul de conținut, care este o altă componentă foarte importantă a sistemului Android.

Content Provider este intermediarul sistemului dvs. Android, facilitând schimbul de date între diferite aplicații Android. Haideți să intrăm puțin în detaliile acestui lucru în acest tutorial Android.





Tutorial Android pentru începători-4 Bonus: Descărcați codul furnizorului de conținut aici . Ați dori acest cod după ce ați parcurs tutorialul! :)

[dl url = ”#” class = ”eModal eModal-6 ″ title =” Cod de descărcare ”desc =” ”type =” ”align =” ”for =” download ”]



Tutoriale Android: furnizor de conținut

Furnizorul de conținut facilitează accesul la un depozit sau depozit central de date pentru a permite partajarea datelor și manipularea datelor în diferite aplicații.

Iată câteva exemple de furnizori de conținut prestabiliți în API-ul sistemului Android:

Tutoriale Android: Furnizori de conținut prestabiliți în sistemul Android



Acești furnizori de conținut permit extragerea utilizatorului dintr-o bază de date subiacentă. În general, furnizorii de conținut utilizează SQLite pentru a stoca baza de date subiacentă.

Să luăm exemplul mereu util al vechii aplicații Facebook vechi, care ne-a ajutat să simplificăm lucrurile și în tutorialele Android anterioare!

Cu toții ați încărcat la un moment dat în viața dvs. de rețea socială, o imagine în cronologia dvs. de Facebook, corect! Cum o faci?

Dacă faceți clic pe butonul Foto de pe perete, ajungeți la galeria foto. De acolo puteți alege o fotografie pe care să o încărcați.

După ce ați citit articolele anterioare din Seria Tutoriale Android , știți despre activități și intenții, prin urmare, știți că așa se întâmplă:

Zidul dvs. Facebook este o „ACTIVITATE”. Când faceți clic pe butonul Foto, este trecut un „INTENT”, care transmite mesajul și se deschide „FURNIZOR DE CONȚINUT” (Galerie foto). Fotografia este încărcată folosind o rețea de încărcare „SERVICE”.

Urmăriți acest videoclip live pentru a afla cum funcționează Furnizorul de conținut în aplicația dvs. Facebook.

ce este impas în Java

De ce sistemul Android are nevoie de furnizori de conținut?

Necesitatea furnizorilor de conținut apare deoarece baza de date creată într-o aplicație nu este vizibilă pentru o a doua aplicație.

Este simplu să creați și să stocați baze de date în diferite aplicații folosind SQLite, cu toate acestea problema este aceasta, o bază de date în Android este privată pentru aplicația care o creează . Nu există o zonă de stocare comună în Android pe care fiecare aplicație să o poată accesa. Prin urmare, pentru ca diferite aplicații să utilizeze o bază de date, sistemul Android are nevoie de o interfață care să permită un astfel de schimb de date între aplicații și procese. Aici intervine furnizorul de conținut.

Chiar am nevoie de un furnizor de conținut?

1) Tu nu trebuie să vă dezvoltați propriul furnizor dacă doriți o bază de date privată pentru o anumită aplicație (această bază de date nu ar fi accesibilă pentru alte aplicații decât cea care a creat-o).

2) Tu totuși au nevoie de un furnizor personalizat pentru a oferi sugestii de căutare personalizate în propriul sistem de aplicații.

3) Ați avea nevoie și de un furnizor de conținut pentru a copia și lipi date complexe din aplicația dvs. în alte aplicații.

Care sunt operațiunile acceptate de un furnizor de conținut?

Furnizorii de conținut acceptă următoarele operațiuni de bază:

unu) Interogare: Interogă furnizorul de conținut pentru toate obiectele, pe baza URI-ului specificat.

2) Șterge: Șterge obiectele specificate din baza de date a unui furnizor de conținut.

3) Actualizați: Actualizează obiectele din baza de date.

4) Introduce: Inserează obiect nou în baza de date.

Pași pentru a efectua o operațiune în Furnizorul de conținut

Pasul 1: accesarea unui furnizor de conținut

Obiect client ContentResolver este utilizat pentru a accesa date de la Furnizorul de conținut. Comunică cu obiectul furnizorului, care, la rândul său, acceptă cererea de acces la date și returnează rezultatele dorite. Interfața de schimb de date furnizată de furnizor și obiectul clientului furnizor permite comunicarea între diferite procese / aplicații.

Aplicația care trebuie să acceseze baza de date trebuie să declare acest lucru și să solicite permisiuni în fișierul său manifest. Acest lucru ar fi discutat în detaliu în tutorialele noastre Android ulterioare.

Content URI

URI de conținut este unul dintre argumentele utilizate pentru identificarea datelor dintr-un furnizor. Are patru părți:

unu) Sistem: Schema pentru furnizorul de conținut are o valoare constantă: „conținut”.

2) Autoritate: Este numele simbolic al furnizorului și este unic pentru fiecare. Acesta este modul în care identificăm furnizorul de conținut dorit dintr-o listă de atât de mulți.

3) Cale: cale ajută la distingerea datelor necesare de la baza de date completă . De exemplu, furnizorul de conținut din jurnalul de apeluri diferențiază apelurile pierdute, apelurile primite etc. folosind căi diferite.

4) ID: Nu este o componentă obligatorie și poate să nu fie prezentă în URI, dar dacă este prezentă, ar trebui să fie numerică. De exemplu, dacă doriți să accesați un anumit fișier muzical de la furnizorul dvs. de conținut media, veți specifica și un ID .

Procesul

Folosind autoritatea furnizorului, ContentResolver identifică furnizorul corect de conținut (deoarece autorizarea este unică pentru fiecare furnizor de conținut). După ce ați făcut acest lucru, componenta cale a URI este utilizată pentru a selecta tabelul de date corect (solicitat). În cazul în care este prezent un ID, furnizorul ar ști ce date exacte sunt solicitate.

URI-urile sunt de două tipuri:

În plus, URI-urile pot avea și informații limitative.

Pasul 2: Cum să preluați date de la un furnizor de conținut

Chiar dacă ContentResolver are acces la tabelul de date acum, nu poate prelua datele necesare decât dacă aplicația are „Permisiunea de acces la citire” pentru furnizorul respectiv. Această permisiune este definită în fișierul manifest al fiecărui furnizor de conținut.

Tot ce o aplicație (care vrea să acceseze această bază de date) trebuie să solicitați această permisiune.

Acum, așa cum am discutat mai devreme în acest tutorial Android, patru operațiuni pot fi efectuate folosind un furnizor de conținut . Vom trece peste fiecare câte unul.

CERERE

Acum, ați accesat furnizorul și aveți permisiunea de a prelua date din acesta. Următorul pas este să construiți interogarea pentru a solicita furnizorului acțiunea necesară .

Iată argumentele utilizate în timpul interogării:

unu) URI : Funcționează exact așa cum s-a explicat mai sus.

2) Proiecție: Interogarea ar trebui returnează un set de coloane din întregul tabel al bazei de date . Acest lucru este cunoscut sub numele de proiecție. Trecerea nulă va reveni la toate coloanele, ceea ce este ineficient.

3) Clauza de selecție: LA filtru care declară care rânduri să revină , formatat ca o clauză SQL WHERE (cu excepția WHERE în sine). Trecerea la nul va reveni la toate rândurile pentru URI-ul dat.

De exemplu, dacă introduceți un alfabet (spuneți „P”) în coloana de căutare a agendei dvs., atunci acesta va returna toate detaliile de contact începând cu „P”. Cu toate acestea, dacă nu introduceți nimic în bara de căutare, lista completă a contactelor este recuperată (clauza de selecție este setată la „nulă” în astfel de cazuri).

4) Argument de selecție: Puteți include „? S” în selecție, care va fi înlocuit cu valorile din selectionArgs, în ordinea în care apar în selecție.

5) Ordinea de sortare: Clauza SQL ORDER BY (excluzând ORDER BY în sine). Dacă treceți la Null, veți obține rezultatele care pot fi neordonate.

EXEMPLU DE COD pentru interogare:

  • Căutarea numerelor de telefon în Contacte
Cursor cursor = 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) String name = cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.DISPLAY_NAME)) (cursor.getString (cursor .getColumnIndex (ContactsContract.Contacts.HAS_PHONE_NUMBER))) if (numCount> 0) {Cursor phoneCursor = contentresolver.query (ContactsContract.CommonDataKinds.Phone.CONTENT_URI, null, CommonDataKinds.? ' , nou Șir [] {id}, nul) while (phoneCursor.moveToNext ()) {String phoneNo = phoneCursor.getString (phoneCursor .getColumnIndex (ContactsContract.CommonDataKinds. Phone.NUMBER)) contactDetails + = 'Name:' + name + ', Număr de telefon:' + phoneNo + ''} phoneCursor.close ()}}}

INSERARE

Să presupunem că doriți să introduceți contacte noi în agenda dvs. de adrese. Obiectul ContentValues este folosit pentru a face aceste inserții. Cheile obiectului ContentValue și coloanele Furnizor de conținut trebuie să se potrivească pentru a realiza acest lucru. Iată un exemplu pentru acest lucru:

EXEMPLU DE COD PENTRU inserare:

  • Operațiunea constă în introducerea unei noi intrări cu numele „Rajnikant” și numărul „9988999888”
// Operațiune ArrayList ops = new ArrayList () int rawContactInsertIndex = ops.size () ops.add (ContentProviderOperation.newInsert (RawContacts.CONTENT_URI) .withValue (RawContacts.ACCOUNT_TYPE, null) .withValue (RawContact). ()) ops.add (ContentProviderOperation .newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, StructuredName.CONTENT_ITEM_TYPE). ) ops.add (ContentProviderOperation.newInsert (Data.CONTENT_URI) .withValueBackReference (Data.RAW_CONTACT_ID, rawContactInsertIndex) .withValue (Data.MIMETYPE, Phone.CONTENT_ITEM_TYPE) .WithValue (99). , Phone.TYPE_MOBILE) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

ACTUALIZARE

Pentru a actualiza un furnizor de conținut se utilizează următoarele argumente:

unu) URI: URI-ul furnizorului de conținut

2) ContentValues: Acesta conține valorile care ar înlocui datele existente.

3) Clauza de selecție: Acest lucru vă poate ajuta să selectați înregistrările specifice de actualizat

4) Argument de selecție: Puteți include „? S” în selecție, care va fi înlocuit cu valorile din selectionArgs, în ordinea în care apar în selecție.

Încă o dată, cheile obiectului ContentValues ​​trebuie să se potrivească coloanelor din Furnizorul de conținut în caz contrar, actualizarea nu ar avea loc.

EXEMPLU DE COD PENTRU Actualizare:

  • Actualizarea numărului de telefon unde numele este „Rajnikant”
Șir unde = 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.CommonD. Phone.NUMBER, „9876543210”) .build ()) getContentResolver (). ApplyBatch (ContactsContract.AUTHORITY, ops)

ȘTERGEREA

Ștergerea utilizează aceleași argumente ca și actualizarea, cu excepția argumentului ContentValues, care nu este necesar, deoarece nu vor exista valori substituite.

EXEMPLU DE COD PENTRU Ștergerea:

  • Ștergeți contactul unde numele este „Rajnikant”
Șir unde = 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)

În cazul operației Insert, URI-ul trebuie să fie bazat pe director. În toate celelalte cazuri, URI-urile pot fi fie bazate pe ID, fie directoare.

Noi speram Tutorial Android pentru începători: Partea 5 nu a fost prea greu de înțeles! Vom discuta mai multe despre furnizorii de conținut în următoarele tutoriale Android. Bucurați-vă de învățarea elementelor de bază până atunci!

ce este .format în python

Aveți nelămuriri în acest tutorial Android? Intreaba-ne.

Învățare fericită!

Următoarele resurse au fost utilizate în crearea acestui tutorial Android! Dezvoltatori oficiali Android , Edureka.in

S-ar putea să vă placă și aceste postări conexe: