Permissions & Storage Permissions • API < 23 vs API >= 23 • AndroidManifest • Úroveň ochrany: • Normal - vibrace, BT, internet - automatické povolení systémem • Dangerous - čtení sms, kontakty, poloha vyžaduje interakci uživatele • Možnost vytvářet vlastní • Permissions groups - systém se ptá jen jednou ve skupině • Dají se zpětně odebrat ... Storage Soubor • getFilesDir(), getCacheDir(), getExternalFilesDir() • /data/data/com.my.app ! • Příklad! SharedPreferences • key - value úložiště • String, Boolean, Float, Int, Set • Příklad! Databáze • SQLiteOpenHelper • Cursor • ContentResolver • ContentProvider • Příklad! ActiveAndroid • Knihovna pro práci s SQLite databází • ORM • Anotace - @Table, @Column • Inicializace v Application @Table(name = "Categories") public class Category extends Model { @Column(name = "Name") public String name; } @Table(name = "Items") public class Item extends Model { @Column(name = "Name") public String name; @Column(name = "Category") public Category category; } Category Id Name 0 Román 1 Detektivka Item Id Name Category 0 1984 0 1 Kmotr 0 2 Vražda v .. 1 • primární/cizí klíč • save/delete • Příklad! public static List getAll(Category category) { return new Select() .from(Item.class) .where("Category = ?", category.getId()) .orderBy("Name ASC") .execute(); } public static Item getRandom() { return new Select() .from(Item.class) .orderBy(“RANDOM()") .executeSingle(); } Cvičení • https://github.com/skywall/muni_cv_4_todolist • Přidejte funkcionalitu pro: • úpravu jména TODO položky • smazání TODO položky