Prevod grupa B1

## ***Aktiviranje komponenti***

Tri od četiri vrste komponenti – aktivnosti, usluge i prijamnici emitovanja – aktiviraju se asinhronom porukom koja se zove namera(*intent*). Namere povezuju pojedinačne komponente jednu sa drugom prilikom izvođenja aplikacije. Mogu se opisati kao glasnici koji zahtevaju radnju od drugih komponenti, bilo da komponenta pripada vašoj aplikaciji ili nekoj drugoj.

Namera se stvara s objektom *Intent*, koji definiše poruku za aktiviranje određene komponente (eksplicitna namera) ili određenog tipa komponente (implicitna namera).

Za aktivnosti i usluge, namera definiše radnju koju treba izvršiti (na primer, pregledati ili poslati nešto) i može specificirati URI podataka na koje treba delovati, između ostalog koje komponenta koja se pokreće možda treba da zna. Na primer, namera može da prenese zahtev za aktivnost za prikazivanje slike ili za otvaranje veb stranice. U nekim slučajevima možete započeti aktivnost da biste dobili rezultat, u kom slučaju aktivnost takođe vraća rezultat u Intent. Na primer, možete dati nameru da dozvolite korisniku da izabere lični kontakt i da vam ga vrati. Povratna namera uključuje URI koji ukazuje na izabrani kontakt.

Za prijemnike emitovanja, namera jednostavno definiše najavu *(announcement)* koja se emituje. Na primer, emitovanje koje pokazuje da je baterija uređaja prazna uključuje samo poznati niz radnji koji pokazuju da je baterija tog uređaja prazna.

Za razliku od aktivnosti, usluga i prijemnika emitovanja, provajderi sadržaja se ne aktiviraju prema namerama. Umesto toga, oni se aktiviraju kada su ciljani zahtevom ContentResolver-a. Razređivač sadržaja upravlja svim direktnim transakcijama sa dobavljačem sadržaja tako da komponenta koja obavlja transakcije sa dobavljačem ne mora i umesto toga poziva metode na objektu ContentResolver. Ovo ostavlja sloj apstrakcije između dobavljača sadržaja i komponente koja zahteva informacije (radi bezbednosti).

Postoje odvojene metode za aktivaciju svake vrste komponente: Možete pokrenuti aktivnost ili joj dodati nešto novo prosleđivanjem Intent u *startActivity*() ili *startActivityForResult()* (kada želite da aktivnost vrati rezultat).Kod Android 5.0 (API level 21) i novijih verzija, možete koristiti klasu *JobScheduler* za planiranje radnji. Za starije verzije Androida, možete pokrenuti uslugu (ili dati nove instrukcije usluzi koja je u toku) prosleđivanjem u *startService(*). Možete se povezati s uslugom prosleđivanjem *Intent u bindService().* Možete pokrenuti emitovanje prosleđivanjem Intent metodama kao što su *sendBroadcast(),* *sendOrderedBroadcast(),* ili *sendStickyBroadcast()*. Možete izvesti upit do provajdera sadržaja pozivanjem query() na *ContentResolveru.*

## ***Datoteka manifesta aplikacije***

Pre nego li Androidov sistem može pokrenuti komponentu aplikacije, on mora znati da komponenta postoji. Ovo se proverava čitanjem datoteke manifesta aplikacije, *AndroidManifest.xml*. Vaša aplikacija mora deklarisati sve svoje komponente u ovoj datoteci, koja mora biti u *root* direktorijumu projekta aplikacije. Manifest čini niz stvari osim deklarisanja komponenti aplikacije. Neke od njih su:

* Identifikuje sve korisničke permisije koje aplikacija zahteva, kao što je pristup internetu ili pristup za čitanje kontakata korisnika.
* Deklariše minimalni nivo API-ja potreban za aplikaciju, na osnovu toga koje API-je aplikacija koristi.
* Deklariše hardverske i softverske karakteristike koje koristi ili zahteva aplikacija, kao što su kamera, bluetooth usluge ili *multitouch screen*.
* Deklariše biblioteke API-ja s kojima se aplikacija mora povezati (osim API Android frameworka), kao što je na primer Google Maps biblioteka.