Pozdrav,
duzan sam pojasnjenja nekih gresaka s vjezbi o notifikacijama. Prije toga, par detalja:
Notification je klasa za notifikacije za trenutnu build verziju, NotificationCompat (kao i ostale Compat verzije klasa) sluzi za ubacivanje novih mogucnosti u stare verzije. Dakle, Compat verzije ce imati funkcionalnosti novijih verzija implementirane na nacin da rade u starijim verzijama cije nativne verzije ne podrzavaju te funkcionalnosti.
Ukoliko zelite da aplikacija radi na vise verzija istovremeno (tj. bez mijenjanja koda) jedini nacin da to (ispravno) postignete je da zapakirate pozive notifikacija u "if" blokove (npr. pogledajte prvi odgovor [url=https://stackoverflow.com/questions/25163641/notification-builder-not-supported-below-4-1-how-do-i-specify-to-only-use-notif]ovdje[/url]).
Za verzije ispod 4.1. koristite NotificationCompat. Ne zaboravite maknuti metode za postavljanje notification channela -- ako ih ostavite aplikacija ce se srusiti.
Za ostale verzije, mozete koristiti NotificationCompat ili Notification. Opcenito se preporuca koristenje NotificationCompat klase jer to zahtijeva manje promjena koda kada prelazite na drugu verziju.
[b]Prva greska (toast prozor s porukom o gresci):[/b]
Na racunalima u praktikumu imamo samo emulator za android verziju 8.0. U verziji 8.0 (i nadalje) notifikacije zahtijevaju definiranje notification channela -- ukoliko to ne napravite, notifikacije nece raditi (ispisat ce se toast poruka u kojoj pise da je notification channel jednak null i notifikacija se nece pojaviti). Dakle, cak i ako ste odabrali projekt za neku raniju verziju, emulator i dalje radi na verziji 8.0 i zahtijeva notifikacijske kanale! Stoga, ukoliko nemate drugih razloga a radite na racunalima u praktikumu, preporucam izradu projekata verzije 8.0 na kolokviju.
[b]Druga greska (nepostojeci konstruktor):[/b]
U verziji 8.0, NotificationBuilder nije imao konstruktor s dva parametra (gdje se prima id nekon notifikacijskog kanala), vec samo onaj s jednim parametrom. Kako smo zakljucili na vjezbama, oba konstruktora rade dok god podesite kanal. Nisam uspio reproducirati gresku koja se nekima javljala (kompajler "ne zna" za drugi konstruktor). Kako su verzije studija i emulatora jednake svima, i kako vecina vas nije imala taj problem, potencijalni krivci su mi odabir krive verzije projekta i/ili ne pozivanje android-setup prije pokretanja. Ukoliko pronadjem pravog krivca u medjuvremenu, javit cu ovdje.
Lijep pozdrav svima,
Lovro
Pozdrav,
duzan sam pojasnjenja nekih gresaka s vjezbi o notifikacijama. Prije toga, par detalja:
Notification je klasa za notifikacije za trenutnu build verziju, NotificationCompat (kao i ostale Compat verzije klasa) sluzi za ubacivanje novih mogucnosti u stare verzije. Dakle, Compat verzije ce imati funkcionalnosti novijih verzija implementirane na nacin da rade u starijim verzijama cije nativne verzije ne podrzavaju te funkcionalnosti.
Ukoliko zelite da aplikacija radi na vise verzija istovremeno (tj. bez mijenjanja koda) jedini nacin da to (ispravno) postignete je da zapakirate pozive notifikacija u "if" blokove (npr. pogledajte prvi odgovor ovdje).
Za verzije ispod 4.1. koristite NotificationCompat. Ne zaboravite maknuti metode za postavljanje notification channela – ako ih ostavite aplikacija ce se srusiti.
Za ostale verzije, mozete koristiti NotificationCompat ili Notification. Opcenito se preporuca koristenje NotificationCompat klase jer to zahtijeva manje promjena koda kada prelazite na drugu verziju.
Prva greska (toast prozor s porukom o gresci):
Na racunalima u praktikumu imamo samo emulator za android verziju 8.0. U verziji 8.0 (i nadalje) notifikacije zahtijevaju definiranje notification channela – ukoliko to ne napravite, notifikacije nece raditi (ispisat ce se toast poruka u kojoj pise da je notification channel jednak null i notifikacija se nece pojaviti). Dakle, cak i ako ste odabrali projekt za neku raniju verziju, emulator i dalje radi na verziji 8.0 i zahtijeva notifikacijske kanale! Stoga, ukoliko nemate drugih razloga a radite na racunalima u praktikumu, preporucam izradu projekata verzije 8.0 na kolokviju.
Druga greska (nepostojeci konstruktor):
U verziji 8.0, NotificationBuilder nije imao konstruktor s dva parametra (gdje se prima id nekon notifikacijskog kanala), vec samo onaj s jednim parametrom. Kako smo zakljucili na vjezbama, oba konstruktora rade dok god podesite kanal. Nisam uspio reproducirati gresku koja se nekima javljala (kompajler "ne zna" za drugi konstruktor). Kako su verzije studija i emulatora jednake svima, i kako vecina vas nije imala taj problem, potencijalni krivci su mi odabir krive verzije projekta i/ili ne pozivanje android-setup prije pokretanja. Ukoliko pronadjem pravog krivca u medjuvremenu, javit cu ovdje.
Lijep pozdrav svima,
Lovro
|