[Curs Android] C08 - Intents & Broadcast Receivers (IPW 2011)

812 views

Published on

These slides are part of the Android Development Course which I taught to 10 students, while participating in the IP Workshop Summer School 2011.
http://www.scoaladevara.info/2011/?page_id=39

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
812
On SlideShare
0
From Embeds
0
Number of Embeds
4
Actions
Shares
0
Downloads
46
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

[Curs Android] C08 - Intents & Broadcast Receivers (IPW 2011)

  1. 1. Android Intents, IntentFilters, BroadcastReceivers Vlad PETRE vlad@vladpetre.com http://twitter.com/vladpetre88 http://facebook.com/vladpetre88 http://www.linkedin.com/in/vladpetre881 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  2. 2. Intentii • O intentie reprezinta o descriere abstracta a unei operatii ce se doreste a fi executata. • Exemple de intentii: – Apel telefonic – Trimiterea unui sms – Deschiderea unei activitati • Reprezinta un Obiect.2 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  3. 3. Atributele unui Intent • Action • Data • Category • Type • Component • Extras3 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  4. 4. Action • Descrie actiunea ce se doreste a fi executata: – Apel telefonic – Trimiterea unui SMS – Deschiderea unui document – Editarea unui document – Pornirea unei activitati • Reprezentat printr-un String. Exemple: – “android.intent.action.MAIN” – “android.intent.action.DIAL” – “android.intent.action.VIEW” – “android.intent.action.EDIT”4 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  5. 5. Data • In general o adresa URI. • Exemple: – http://www.google.ro – content://contacts/… – file:///sdcard/... – tel://...5 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  6. 6. Category • Optional. • Categoriseste actiunea. Ofera astfel informatii suplimentare. – CATEGORY_LAUNCHER – activitate initiala a unui task – CATEGORY_HOME – activitatea afiseaza homescreen-ul –… • Un Intent poate contine mai multe categorii. • String: – “android.intent.category.LAUNCHER”6 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  7. 7. Type • Tipul datelor din Intent • Atribut optional. • Daca nu e specificat, tipul este dedus din data in sine (ex: file:///sdcard/poze/poza.jpg). • String: – “image/jpg” – “contacts/contact”7 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  8. 8. Component • Specifica componenta exacta de destinatie. • Atribut optional. • Daca nu e specificat, componenta destinatie este determinata pe baza celorlalte atribute (actiunea, data/type, categorii). • Daca e specificat, toate celelalte componente ale unui Intent devin optionale.8 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  9. 9. Extras • Date suplimentare • Bundle – putIntExtra(…) – putBooleanExtra(…) – getStringExtra() – getIntExtra() – getBooleanExtra() –…9 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  10. 10. Cum folosim Intent-urile?10 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  11. 11. Mod de folosire • Metode care emit Intent-uri: – void startActivity (Intent i) – void startService (Intent i) – void sendBroadcast (Intent i, String permission) • Sistemul va cauta componenta cea mai potrivita pentru a trata intentia.11 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  12. 12. Cautarea • Cautarea componentei se realizeaza dupa: – ACTION – TYPE (de obiei este extras din DATA) – CATEGORY • Se determina astfel componenta cea mai potrivita (sau o lista de compnente, in cazul in care mai multe componente pot trata aceasta intentie).12 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  13. 13. IntentFilters • Mod de a declara filtre de intentii la care pot raspunde diferite componente: – Activitati – Servicii – BroadcastReceivers • Trebuie declarat in Manifest.13 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  14. 14. Exemplu IntentFilters 1 • Ex: Launcher-ul cere o lista cu toate componentele ce raspund la: – Actiunea: ACTION_MAIN – Categoria: CATEGORY_LAUNCHER14 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  15. 15. Exemplu IntentFilters 2 • In Manifest15 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  16. 16. Exemplu IntentFilters 3 • In Manifest16 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  17. 17. Cum legam activitatile?17 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  18. 18. Legarea activitatilor • Pornirea unei activitati • Pasarea de parametri noii activitati • Intoarcerea unei valori de la noua activitate18 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  19. 19. Metode din clasa Activity (1) • Intent getIntent() – Întoarce Intent-ul cu care a fost pornită • void setResult (int resultCode) – Setează valoarea de rezultat ce trebuie întoarsă • void setResult (int resultCode, Intent data) – Setează valoarea de rezultat ce trebuie întoarsă – Adaugă date19 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  20. 20. Metode din clasa Activity (2) • void onActivityResult (int requestCode, int resultCode, Intent data) • Trebuie suprascrisa • Este apelată de sistem când o activitate întoarce un rezultat. • Parametri – requestCode – codul pus in startActivityForResult(…) – resultCode –codul intors de setResult(…) – data – informațiile suplimentare setate de setResult(…)20 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  21. 21. Pornirea unei activitati (1) context.startActivity(Intent intent); Intent starter = new Intent(context, ClasaActvitate.class); context.startActivity(starter);21 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  22. 22. Cum pornim o activitate pasand parametri?22 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  23. 23. Pornirea unei activitati cu parametri (1) context.startActivity(Intent intent); Intent starter = new Intent(context, ClasaActvitate.class); context.startActivity(starter); starter.putExtra(“parametru1”, valoare); context.startActivity(starter);23 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  24. 24. Pornirea unei activitati cu parametri (2) • Pentru a prelua parametrii intent-ului, in noua activitate: Intent starter = getIntent(); String parametru1 = starter.getStringExtra(“parametru1”);24 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  25. 25. Cum pornesc o activitate ce intoarce o valoare?25 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  26. 26. Activitati ce intorc o valoare (1) • In activitatea initiala: context.startActivityForResult(Intent intent, int requestCode); int requestCode = 100; Intent starter = new Intent(context, ClasaActvitate.class); context.startActivityForResult(starter, requestCode);26 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  27. 27. Activitati ce intorc o valoare (2) • În noua activitate pornită, pentru a intoarce un rezultat: Intent data = new Intent(this); data.putExtra(“rezultat1”, rezultat1); data.putExtra(“rezultat2”, rezultat2); int resultCode = 200; setResult(resultCode, data); finish();27 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  28. 28. Activitati ce intorc o valoare (3) • Inapoi in activitatea initiala, trebuie sa implementam metoda care preia rezultatele: void onActivityResult(int requestCode, int resultCode, Intent data) • requestCode – codul initial pentru a identifica cererea • resultCode – codul intors ca rezultat • data - un Intent care poate contine alte informatii28 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  29. 29. BroadcastReceiver (I) • Componenta ce permite captarea de anunturi generate de sistem sau informatii generate de alte aplicatii. • Anunturile vin sub forma de Intent-uri. • Exemple de actiuni informative: – “android.intent.action.BATTERY_LOW” – “android.intent.action.ACTION_BOOT_COMPLETED” – “android.intent.action.ACTION_POWER_CONNECTED”29 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  30. 30. BroadcastReceiver (II) • Extind clasa BroadcastReceiver – void onReceive(Context context, Intent intent) • Trebuie suprascrisă • Nu extinde Context, ci îl primește ca parametru.30 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  31. 31. Ciclul de viata al unui BroadcastReceiver • Cât timp rulează funcția onReceive() • Un BroadcastReceiver nu poate: – Porni ferestre de Dialog – Executa actiuni asincrone31 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  32. 32. Exemplu (1) • In Manifest32 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  33. 33. Exemplu (2)33 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  34. 34. Referinte • http://pdm.ipworkshop.ro • http://developer.android.com/guide/topics/intents/inten • http://developer.android.com/reference/android/conten • http://developer.android.com/reference/android/conten34 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  35. 35. Întrebări?35 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

×