Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Szabad-e? - Futásidejű engedélykérés Androidon // Can I? - Runtime permission handling on Android

Szabad-e? - Futásidejű engedélykérés Androidon // Can I? - Runtime permission handling on Android

A futásidejű engedélykérésről szóló előadásom // My presentation about runtime permission handling (written in Hungarian).

Linkek a diasor végéről // Links from the end:
AutSoft blog
https://blog.autsoft.hu/

Mother, May I? (Android Dev Summit 2015)
https://youtu.be/5xVh-7ywKpE

Asking For Permission (Android Developers)
https://youtu.be/iZqDdvhTZj0

Runtime Permissions in Android 6.0 Marshmallow
https://youtu.be/C8lUdPVSzDk

Everything every Android Developer must know about new
Android's Runtime Permission
http://bit.ly/2ggUJ6x

Balázs Gerlei

December 07, 2016
Tweet

More Decks by Balázs Gerlei

Other Decks in Technology

Transcript

  1. Engedélyek kezelése Android 6.0 előtti verziókon • Manifestben kell deklarálnunk

    a szükséges engedélyeket • Az alkalmazáshoz szükséges engedélyek listáját telepítéskor (és frissítéskor) látja a felhasználó • Telepítéssel minden engedély megadásra kerül • Ha telepítve van az alkalmazás, akkor megkapott minden engedélyt, hisz visszavonni sem lehet azokat
  2. • Minimális fejlesztői munka • Ha telepítve van az alkalmazás,

    akkor biztosan meg van adva minden engedély Engedélyek kezelése Android 6.0 előtti verziókon • Felhasználók számára sokszor félelmetes mennyiségű engedély telepítéskor és frissítéskor, emiatt hezitálás • Engedélykérést nem lehet jól megmagyarázni • Mindent vagy semmit: ha a felhasználó letölti az alkalmazást, meg kell adnia az összes engedélyt, és később sem változtathat • Sokszor nehezen érthető engedélyek, kontextus hiánya Előnyök Hátrányok
  3. Engedélyek kezelése Android 6.0 és újabb verziókon • Target SDK

    23 felett lép életbe az új rendszer • Manifestben ugyanúgy deklarálnunk kell a szükséges engedélyeket • Installáláskor és telepítéskor nincs engedélylista • Veszélytelennek ítélt engedélyeket alapból megkapunk, kérni sem kell • Potenciálisan veszélyesnek ítélt engedélyeket futásidőben kell kérnünk • A felhasználótól valójában 9 engedély csoport valamelyikére kérünk engedélyt • De kódból mi ettől még az egyes engedélyeket kérjük el • Ne is alapozzunk arra, hogy ha valamelyik engedély megvan egy csoportból, akkor a többi is megvan
  4. Engedélyek kezelése Android 6.0 és újabb verziókon • Lehet egyszerre

    több engedélyt is kérni, a rendszer ekkor több lépésből álló dialógusba összevonja a kéréseket • 4-5-nél lehetőleg ne kérjünk egyszerre többet • A rendszer által feldobott engedélykérő dialógust nem módosíthatjuk, de az első megtagadást követő engedélykérés előtt megjeleníthetünk magyarázatot • A felhasználó később is visszavonhatja az engedélyeket (azaz a csoportokat) • Ha egyszer már megtagadta az engedélyt a felhasználó, de újra kérjük, lehetősége van egy „Ne is kérd többet” opciót beállítani
  5. Engedélyek kezelése Android 6.0 és újabb verziókon • Lehet egyszerre

    több engedélyt is kérni, a rendszer ekkor több lépésből álló dialógusba összevonja a kéréseket • 4-5-nél lehetőleg ne kérjünk egyszerre többet • A rendszer által feldobott engedélykérő dialógust nem módosíthatjuk, de az első megtagadást követő engedélykérés előtt megjeleníthetünk magyarázatot • A felhasználó később is visszavonhatja az engedélyeket (azaz a csoportokat) • Ha egyszer már megtagadta az engedélyt a felhasználó, de újra kérjük, lehetősége van egy „Ne is kérd többet” opciót beállítani
  6. Engedélyek kezelése Android 6.0 és újabb verziókon • Lehet egyszerre

    több engedélyt is kérni, a rendszer ekkor több lépésből álló dialógusba összevonja a kéréseket • 4-5-nél lehetőleg ne kérjünk egyszerre többet • A rendszer által feldobott engedélykérő dialógust nem módosíthatjuk, de az első megtagadást követő engedélykérés előtt megjeleníthetünk magyarázatot • A felhasználó később is visszavonhatja az engedélyeket (azaz a csoportokat) • Ha egyszer már megtagadta az engedélyt a felhasználó, de újra kérjük, lehetősége van egy „Ne is kérd többet” opciót beállítani
  7. Engedélyek kezelése Android 6.0 és újabb verziókon 1. Magyarázzuk meg

    előre 2. Kérjünk engedélyt előre 3. Magyarázzuk meg a kontextusában 4. Kérjünk engedélyt a kontextusában Kritikus Funkció Másodlagos Funkció Szükséges engedély nem egyértelmű Szükséges engedély egyértelmű
  8. Engedélyek kezelése Android 6.0 és újabb verziókon // Engedély meglétének

    ellenőrzése int Context#checkSelfPermission(String); // Engedély elkérése int Activity/Fragment#requestPermissions(String[], int); // Engedélykérés eredményének kezelése void Activity/Fragment#onRequestPermissionsResult(int, String[], int[]) // Magyarázat szükségességének ellenőrzése boolean Activtiy/Fragment#shouldShowRequestPermissionRationale(String); // Annak ellenőrzése, hogy egy Device Policy nem gátolja-e meg az engedély megszerzését boolean PackageManager#isPermissionRevokedByPolicy(String, String);
  9. Engedélyek kezelése Android 6.0 és újabb verziókon // Engedély meglétének

    ellenőrzése int Context#checkSelfPermission(String); // Engedély elkérése int Activity/Fragment#requestPermissions(String[], int); // Engedélykérés eredményének kezelése void Activity/Fragment#onRequestPermissionsResult(int, String[], int[]) // Magyarázat szükségességének ellenőrzése boolean Activtiy/Fragment#shouldShowRequestPermissionRationale(String); // Annak ellenőrzése, hogy egy Device Policy nem gátolja-e meg az engedély megszerzését boolean PackageManager#isPermissionRevokedByPolicy(String, String); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { // Engedélykérés és eredmény lekezelése } Vagy használjuk a Support Library-s megfelelőket
  10. • Súrlódásmentes telepítés és frissítés • Megmagyarázhatjuk, miért van szükségünk

    egy engedélyre • Van lehetőség használni az alkalmazást akkor is, ha valamely engedélyeket nem kap meg • Engedélykérés kontextusban Engedélyek kezelése Android 6.0 és újabb verziókon • Megnövekedett fejlesztői és UX dizájner munka • Alaposan át kell gondolni, mire és mikor kérjünk engedélyt • Néhány API híváshoz nehezen megmagyarázható engedélyek szükségesek • Magyarázatot alapból csak az első elutasítás után mutathatunk Előnyök Hátrányok
  11. 1. Biztosan szükségünk van az engedélyre? 2. Mennyire kritikus az

    engedély az alkalmazás működéséhez? 3. Mennyire egyértelmű az engedély szükségessége? 4. Melyek azok a pontok ahol először szükség van az engedélyre? 5. Hogyan kezeljük, ha megtagadásra kerül az engedély? Engedélykérés implementálása
  12. Engedélykérés implementálása • Ne tartsuk 22-esen a target sdk-t •

    Ha tudjuk, kerüljük el az engedélykérést • Kérjük minél egyértelműbb helyen az engedélyeket, lehetőleg ne rögtön az induláskor • Használjunk library-t • hotchemi/PermissionsDispatcher • https://github.com/hotchemi/PermissionsDispatcher • Vonjuk be a dizájnereket (UX szempontból is!) • Válasszuk a megfelelő komponenseket és flow-t az engedély kérésére és a szükségesség magyarázására
  13. Képernyőfedvény (Screen Overlay) • Más alkalmazások felé rajzolni képes alkalmazásokat

    jelent • Pl. Facebook chatheads • Az Android meg akarja akadályozni hogy egy ilyen komponenst tartalmazó alkalmazás átveréssel rávehesse a felhasználót hogy megadjon neki engedélyeket • Fejlesztői oldalról ezt sajnos nem tudjuk detektálni, a felhasználónak kell megoldania
  14. • AutSoft blog (várható cikk a témában) https://blog.autsoft.hu/ • Mother,

    May I? (Android Dev Summit 2015) https://youtu.be/5xVh-7ywKpE • Asking For Permission (Android Developers) https://youtu.be/iZqDdvhTZj0 • Runtime Permissions in Android 6.0 Marshmallow https://youtu.be/C8lUdPVSzDk • Everything every Android Developer must know about new Android's Runtime Permission http://bit.ly/2ggUJ6x Köszönöm a figyelmet!