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