SlideShare a Scribd company logo
Android
    Intents, IntentFilters, BroadcastReceivers

                            Vlad PETRE

                     vlad@vladpetre.com
                http://twitter.com/vladpetre88
              http://facebook.com/vladpetre88
          http://www.linkedin.com/in/vladpetre88


1           Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
Atributele unui Intent
    •   Action
    •   Data
    •   Category
    •   Type
    •   Component
    •   Extras



3                   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
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
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
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
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
Extras
    • Date suplimentare
    • Bundle
      – putIntExtra(…)
      – putBooleanExtra(…)
      – getStringExtra()
      – getIntExtra()
      – getBooleanExtra()
      –…


9                 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Cum folosim Intent-urile?


10        Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
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
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
Exemplu IntentFilters 1




     • Ex: Launcher-ul cere o lista cu toate componentele
       ce raspund la:
       – Actiunea: ACTION_MAIN
       – Categoria: CATEGORY_LAUNCHER

14                 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Exemplu IntentFilters 2




     • In Manifest
15                   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Exemplu IntentFilters 3




     • In Manifest

16                   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Cum legam activitatile?


17       Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Legarea activitatilor
     • Pornirea unei activitati
     • Pasarea de parametri noii activitati
     • Intoarcerea unei valori de la noua activitate




18                  Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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ă date



19                   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
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
Cum pornim o activitate pasand parametri?




22              Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
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
Cum pornesc o activitate ce intoarce o
                   valoare?



25            Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
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
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 informatii




28                    Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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
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
Ciclul de viata al unui BroadcastReceiver
     • Cât timp rulează funcția onReceive()



     • Un BroadcastReceiver nu poate:
       – Porni ferestre de Dialog
       – Executa actiuni asincrone




31                  Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Exemplu (1)




     • In Manifest

32                   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Exemplu (2)




33   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
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/conten




34                   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
Întrebări?


35   Scoala de Vara IP Workshop 2011 – Calimanesti Valcea

More Related Content

PDF
SSD pe intelesul tuturor!
PPT
Nvidia Tegra
PDF
Ziqi yangedp279unit4.1lessonplan
PPT
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
PPT
Aplicare Filtre pe Imagini
PPT
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
PPTX
גכדג
PPT
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA
SSD pe intelesul tuturor!
Nvidia Tegra
Ziqi yangedp279unit4.1lessonplan
[Curs Android] C06 - DDMS & LogCat (IPW 2011)
Aplicare Filtre pe Imagini
Diploma Presentation: Friloc - Retea de socializare bazata pe geolocalizare
גכדג
Optimizarea metodelor de sortare SIMD pentru GPU-uri NVIDIA

More from Vlad Petre (20)

PDF
The 3-D Secure Protocol
PPT
Founding a startup. DOs and DON'Ts.
PPT
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
PPT
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
PPT
[Curs Android] C07 - Liste (IPW 2011)
PPT
[Curs Android] C05 - Emulator (IPW 2011)
PPT
[Curs Android] C04 - User Interface (IPW 2011)
PPT
[Curs Android] C02 - Aplicatii (IPW 2011)
PPT
[Curs Android] C01 - Introducere (IPW 2011)
PDF
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
PPT
Eneco: Energy Economy
PPT
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
PDF
[SCS]Friloc - Scientific Paper
DOC
Critica asupra lucrarii Proactive Computing
PDF
Critica asupra Singularitatii lui Vernor Vinge
PDF
Voicenger - Software Architecture Document
PDF
Voicenger - Software Design Document
PDF
Voicenger - System Requirements Specification
PPT
SIM Project: Optimizing a Benchmarking Tool
PPT
The Bluetooth Protocol
The 3-D Secure Protocol
Founding a startup. DOs and DON'Ts.
[Curs Android] C10 - Threaduri & Servicii (IPW 2011)
[Curs Android] C09 - Stocarea Datelor (IPW 2011)
[Curs Android] C07 - Liste (IPW 2011)
[Curs Android] C05 - Emulator (IPW 2011)
[Curs Android] C04 - User Interface (IPW 2011)
[Curs Android] C02 - Aplicatii (IPW 2011)
[Curs Android] C01 - Introducere (IPW 2011)
Diploma Project: Friloc - Retea de socializare bazata pe geolocalizare
Eneco: Energy Economy
Kickstart Project: Android+Restlet+Hibernate+PostgreSQL
[SCS]Friloc - Scientific Paper
Critica asupra lucrarii Proactive Computing
Critica asupra Singularitatii lui Vernor Vinge
Voicenger - Software Architecture Document
Voicenger - Software Design Document
Voicenger - System Requirements Specification
SIM Project: Optimizing a Benchmarking Tool
The Bluetooth Protocol
Ad

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

  • 1. Android Intents, IntentFilters, BroadcastReceivers Vlad PETRE vlad@vladpetre.com http://twitter.com/vladpetre88 http://facebook.com/vladpetre88 http://www.linkedin.com/in/vladpetre88 1 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. Atributele unui Intent • Action • Data • Category • Type • Component • Extras 3 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. 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. 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. 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. 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. Extras • Date suplimentare • Bundle – putIntExtra(…) – putBooleanExtra(…) – getStringExtra() – getIntExtra() – getBooleanExtra() –… 9 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 10. Cum folosim Intent-urile? 10 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. 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. 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. Exemplu IntentFilters 1 • Ex: Launcher-ul cere o lista cu toate componentele ce raspund la: – Actiunea: ACTION_MAIN – Categoria: CATEGORY_LAUNCHER 14 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 15. Exemplu IntentFilters 2 • In Manifest 15 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 16. Exemplu IntentFilters 3 • In Manifest 16 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 17. Cum legam activitatile? 17 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 18. Legarea activitatilor • Pornirea unei activitati • Pasarea de parametri noii activitati • Intoarcerea unei valori de la noua activitate 18 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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ă date 19 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. 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. Cum pornim o activitate pasand parametri? 22 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. 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. Cum pornesc o activitate ce intoarce o valoare? 25 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. 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. 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 informatii 28 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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. 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. Ciclul de viata al unui BroadcastReceiver • Cât timp rulează funcția onReceive() • Un BroadcastReceiver nu poate: – Porni ferestre de Dialog – Executa actiuni asincrone 31 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 32. Exemplu (1) • In Manifest 32 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 33. Exemplu (2) 33 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 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/conten 34 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea
  • 35. Întrebări? 35 Scoala de Vara IP Workshop 2011 – Calimanesti Valcea