Skryť trvalé upozornenia pre aplikácie na pozadí a prekrytia v systéme Android O

Návod na skrytie trvalého upozornenia v systéme Android O, ktoré sa zobrazuje, keď je spustená aplikácia na pozadí alebo keď sa zobrazuje prekrytie.

Aktualizácia 25. 8. 2017: Tento tutoriál je už zastaraný, pretože spoločnosť Google opravila metódu, ktorú používame na skrytie pretrvávajúceho upozornenia na pozadí. Objavili sme však ďalšie riešenie tohto problému a napísali sme o ňom krátky návod, ktorý nájdete tu.

Android O sa snaží priniesť hlavné vylepšenia operačného systému Android, ktorý všetci poznáme a milujeme. Režim obrazu v obraze pre telefóny, oznamovacie kanály, inteligentný výber textu, služby automatického dopĺňania a pod kapotou mnoho, mnoho zmien na zvýšenie výdrže batérie, výkonu a zabezpečenia. Jednou z funkcií, ktorá má používateľom pomôcť vyriešiť problémy s výdržou batérie a výkonom, sú obmedzenia procesov na pozadí. Bez toho, aby sme zachádzali do prílišných podrobností, aplikácie v systéme Android O už nie je možné prebudiť z ich zaregistrovaných manifestov implicitné vysielacie prijímače a tie už nemôžu spustiť služby na pozadí bez toho, aby prešli JobScheduler. Ak chce aplikácia spustiť službu na pozadí, musí používateľovi výslovne oznámiť, že to robí, a to odoslaním upozornenia. Keď však aplikácia beží na pozadí, Android O sa teraz zdanlivo zapne 

ďalší trvalé upozornenie, ktoré vám povie, aké aplikácie sú spustené. K tomu dochádza aj vtedy, keď aplikácia s SYSTEM_ALERT_WINDOW povolenie (napríklad populárne Súmrak app) momentálne zobrazuje prekrytie.

Trvalé upozornenie systému Android O pre aplikácie na pozadí a prekrytie. Kredity: Ben Schoon \\ 9to5Google

Aj keď sú tieto upozornenia v predvolenom nastavení minimalizované, používateľ ich nemôže zrušiť ani natrvalo zablokovať v Nastaveniach. Toto správanie je pre mnohých používateľov veľmi nepríjemné a ja vážne dúfam, že nám spoločnosť Google poskytne spôsob, ako toto upozornenie deaktivovať v konečnom vydaní systému Android O/Android 8.0. Ak však nie, tam je stále cesta k natrvalo skryť upozornenie na trvalé aplikácie na pozadí. Ukážem vám, ako to urobiť v podrobnom sprievodcovi, po ktorom bude nasledovať vysvetlenie, ako to funguje, ako aj dôležité upozornenia.


Požiadavky:

  • Android O
  1. Nainštalujte ovládače USB pre váš konkrétny telefón, ak používate Windows (možno ich nájsť tu).
  2. Stiahnite si Binárne ADB pre váš konkrétny operačný systém (Windows, Mac, Linux). Tieto odkazy budú vždy smerovať na najnovšiu verziu binárneho súboru, takže nemusíte prehľadávať sieť a hľadať najnovšiu verziu.
  3. Extrahujte obsah stiahnutého súboru ZIP do ľahko prístupného priečinka v počítači (napríklad do priečinka Stiahnuté súbory).
  4. V telefóne prejdite do aplikácie Nastavenia a klepnite na možnosť „O telefóne“.
  5. Nájdite číslo zostavy a 7-krát naň klepnite, aby ste aktivovali režim vývojára. Po aktivácii sa zobrazí kontextové okno.
  6. Vráťte sa do hlavnej ponuky Nastavenia a zadajte Možnosti vývojára, aby ste mohli povoliť režim ladenia USB.
  7. Pripojte telefón k počítaču a potiahnutím nadol po paneli s upozorneniami zmeňte režim USB z „iba nabíjanie“ na režim „prenos súborov (MTP)“. Pre váš telefón to nemusí byť potrebné.
  8. Na počítači prejdite do adresára, do ktorého ste extrahovali binárny súbor ADB.
  9. Spustite príkazový riadok/terminál v tomto adresári ADB. Používatelia systému Windows to môžu urobiť stlačením kombinácie klávesov Shift + pravým tlačidlom myši a výberom možnosti „otvoriť príkazový riadok tu“.
  10. Keď sa nachádzate v prostredí príkazového riadka alebo terminálu, zadajte nasledujúci príkaz: adb devices
  11. Tým sa spustí démon ADB. Ak je toto vaše prvé spustenie ADB, na telefóne sa vám tiež zobrazí výzva na autorizáciu pripojenia.
  12. Teraz znova spustite príkaz adb devices z kroku 10 a príkazový riadok/terminál vytlačí sériové číslo vášho zariadenia. Ak áno, ste pripravení ísť ďalej. Ak nie, ovládače USB pravdepodobne nie sú správne nainštalované.
  13. Vráťte sa do príkazového riadka a zadajte nasledujúci príkaz: adb shell
  14. Teraz vykonajte nasledujúci príkaz: cmd appops set android POST_NOTIFICATION ignore
  15. Nedostanete správu o úspechu ani nič podobné, ale pokiaľ nevidíte chybu, malo by to fungovať. Teraz stačí reštartovať telefón!

    Áno, uvedomujem si, že sú to skôr obrázky obrazovky telefónu než snímky obrazovky. Sám nemám zariadenie kompatibilné so systémom Android O, preto som požiadal TK, aby mi poslal obrázky.

  16. Ak chcete tento príkaz vrátiť späť, zadajte ho do príkazového riadka: cmd appops set android POST_NOTIFICATION allow

Ako to funguje

Pomocou skrytého rozhrania príkazového riadka pre App Ops, systém správy povolení pre používateľov systému Android, môžeme obmedziť povolenie POST_NOTIFICATION z balíka „android“. (Poznámka: nastavujeme ho na „ignorovať“ a nie „zamietnuť“, pretože „odmietnutie“ môže spôsobiť nejaké chyby.) Toto povolenie som našiel pri pohľade na príslušný zdrojový kód pre AppOpsManager, ktorý uvádza všetky možné povolenia, ktoré je možné udeliť/odvolať, pričom mnohé z nich nie sú dostupné v nastaveniach systému Android. Balík „android“ v skutočnosti odkazuje na „Android System“ AKA framework-res.apk, ktorý je zodpovedný za pretrvávajúce upozornenia, ktorých sa snažíme zbaviť.

V podstate zrušením povolenia POST_NOTIFICATION systému Android už nemôže zobrazovať upozornenie! Znie to celkom jednoducho, však? Žiaľ, treba si uvedomiť jedno varovanie. „Systém Android“ je zodpovedný za viac než len toto upozornenie, takže žiadne ďalšie upozornenia, ktoré môže uverejniť, sa už nebudú zobrazovať. Môže to zahŕňať upozornenie na režim USB (ktoré je stále možné zmeniť prostredníctvom nastavenia v Možnostiach vývojára), ako aj niektoré ďalšie veci.

Aj keď ide z našej strany o dosť drastické opatrenie, v súčasnosti je to jediný spôsob, ako toto upozornenie skryť od rootovania vášho telefónu a úpravy samotného rámca, čo je samozrejme niečo, čo nie je veľa používateľov ochotných alebo schopných robiť. Úprimne dúfam, že spoločnosť Google ponúka spôsob, ako skryť toto upozornenie v budúcom vydaní systému Android O, alebo ešte lepšie toto upozornenie úplne odstrániť. Google chce pochopiteľne zlepšiť používateľskú skúsenosť tým, že používateľov upozorní, keď je na pozadí spustená aplikácia používateľ si toho nemusí byť vedomý, ale spôsob, ktorý zvolil, je nepríjemný pre tých z nás, ktorí vedia, čo s každou aplikáciou sme použitím.