Vodič za skrivanje stalne obavijesti u Androidu O koja pokazuje kada je pokrenuta pozadinska aplikacija ili kada se prikazuje sloj.
Ažuriranje 8/25/17: Ovaj vodič je sada zastario, jer je Google zakrpao metodu koju koristimo za skrivanje stalne obavijesti u pozadini. Međutim, otkrili smo još jedno zaobilazno rješenje za ovaj problem i napisali smo kratki vodič o tome možete pronaći ovdje.
Android O želi donijeti velika poboljšanja u Android OS koji svi poznajemo i volimo. Način rada slika u slici za telefone, kanali obavijesti, pametni odabir teksta, usluge automatskog popunjavanja, a ispod haube mnoge, mnoge promjene za produljenje trajanja baterije, performansi i sigurnosti. Jedna značajka koja bi trebala pomoći korisnicima riješiti probleme s trajanjem baterije i performansama su ograničenja pozadinskih procesa. Ne ulazeći u previše detalja, aplikacije u sustavu Android O više se ne mogu probuditi iz svojih manifesta registriranih implicitne prijemnike emitiranja i oni više ne mogu pokrenuti pozadinske usluge bez prolaska JobScheduler. Ako aplikacija želi pokrenuti pozadinsku uslugu, mora izričito reći korisniku da to radi objavljivanjem obavijesti. Međutim, kada aplikacija radi u pozadini, Android O sada naizgled djeluje
još trajna obavijest koja vam govori koje su aplikacije pokrenute. To se također događa kada aplikacija s SYSTEM_ALERT_WINDOW dopuštenje (kao što je popularno Sumrak aplikacija) trenutno prikazuje sloj.Iako su te obavijesti minimizirane prema zadanim postavkama, korisnik ih ne može odbaciti ili trajno blokirati u Postavkama. Ovo ponašanje jako smeta mnogim korisnicima i iskreno se nadam da će nam Google dati način da onemogućimo ovu obavijest u konačnom izdanju Android O/Android 8.0. Međutim, ako ne, tamo je još uvijek način da trajno sakriti trajnu obavijest o pozadinskim aplikacijama. Prikazat ću kako to učiniti u vodiču korak po korak, nakon čega slijedi objašnjenje kako to radi, kao i važna upozorenja.
Zahtjevi:
- Android O
- Instalirajte USB upravljačke programe za svoj telefon ako koristite Windows (mogu se pronaći ovdje).
- Preuzmite ADB binarni za vaš operativni sustav (Windows, Mac, Linux). Ove veze uvijek će upućivati na najnoviju verziju binarne datoteke, tako da ne morate pretraživati mrežu u potrazi za najnovijom.
- Izdvojite sadržaj ZIP datoteke koju ste preuzeli u lako dostupnu mapu na računalu (kao što je mapa Preuzimanja).
- Idite na aplikaciju Postavke na svom telefonu i dodirnite opciju "O telefonu".
- Pronađite broj međuverzije i dodirnite ga 7 puta kako biste omogućili način rada za razvojne programere. Vidjet ćete skočni prozor kada se omogući.
- Vratite se na glavni izbornik postavki i unesite opcije za razvojne programere kako biste mogli omogućiti USB način otklanjanja pogrešaka.
- Uključite svoj telefon u računalo i prijeđite prstom prema dolje po ploči s obavijestima kako biste promijenili USB način rada iz “samo punjenje” u “prijenos datoteka (MTP)”. Ovo možda nije potrebno za vaš telefon.
- Na računalu potražite direktorij u koji ste izdvojili ADB binarnu datoteku.
- Pokrenite naredbeni redak/terminal u ovom ADB direktoriju. Za korisnike Windowsa, to se može učiniti pritiskom na Shift+desnom tipkom miša, a zatim odabirom opcije "otvori naredbeni redak ovdje".
- Kada ste u okruženju naredbenog retka ili terminala, unesite sljedeću naredbu:
adb devices
- Ovo će pokrenuti ADB demon. Ako vam je ovo prvi put da pokrećete ADB, također ćete vidjeti upit na svom telefonu u kojem se od vas traži da autorizirate vezu.
- Sada ponovno pokrenite naredbu adb devices iz koraka 10 i naredbeni redak/terminal ispisat će serijski broj vašeg uređaja. Ako se dogodi, onda ste spremni nastaviti dalje. Ako nije, tada USB upravljački programi vjerojatno nisu pravilno instalirani.
- Vratite se na naredbeni redak i unesite sljedeću naredbu:
adb shell
- Sada izvršite sljedeću naredbu:
cmd appops set android POST_NOTIFICATION ignore
- Nećete dobiti poruku o uspjehu ili nešto slično, ali sve dok ne vidite pogrešku, trebalo je raditi. Sada samo ponovno pokrenite telefon!
Da, shvaćam da su ovo slike zaslona telefona, a ne snimke zaslona. Sam nemam Android O kompatibilan uređaj, pa sam zamolio TK da mi pošalje slike.
- Ako želite vratiti ovu naredbu, unesite ovo u naredbeni redak:
cmd appops set android POST_NOTIFICATION allow
Kako radi
Koristeći skriveno sučelje naredbenog retka za App Ops, Androidov sustav upravljanja dopuštenjima usmjeren prema korisniku, možemo ograničiti dopuštenje POST_NOTIFICATION iz paketa "android". (Napomena: postavljamo ga na "ignore" umjesto na "deny" jer "deny" može uzrokovati neke pogreške.) Pronašao sam ovo dopuštenje gledajući relevantni izvorni kod za AppOpsManager, koji navodi sva moguća dopuštenja koja se mogu dodijeliti/opozvati, od kojih mnoga nisu dostupna u postavkama Androida. Paket "android" zapravo se odnosi na "Android System" AKA framework-res.apk, koji je odgovoran za trajne obavijesti kojih se pokušavamo riješiti.
Opozivom dopuštenja POST_NOTIFICATION Android sustava više ne može prikazivati obavijest! Zvuči prilično jednostavno, zar ne? Nažalost, morate biti svjesni jednog upozorenja. "Android sustav" odgovoran je za više od ove obavijesti, tako da se sve druge obavijesti koje bi mogao objaviti više neće prikazivati. To može uključivati obavijest o USB modu (koja se i dalje može promijeniti kroz postavku u opcijama za razvojne programere), kao i neke druge stvari.
Iako je ovo prilično drastična mjera koju treba poduzeti s naše strane, to je trenutno jedini način da se ova obavijest sakrije od rootanja vašeg telefona i modificiranja samog okvira što je očito nešto što malo korisnika želi ili ne može napraviti. Iskreno se nadam da Google nudi način za skrivanje ove obavijesti u budućem izdanju Androida O, ili još bolje da u potpunosti ukloni ovu obavijest. Google razumljivo želi poboljšati korisničko iskustvo obavještavanjem korisnika kada aplikacija radi u pozadini korisnik možda nije svjestan, ali metoda koju su odabrali neugodna je za one od nas koji znamo što o svakoj aplikaciji korištenjem.