Skrýt trvalé upozornění pro aplikace na pozadí a překrytí v systému Android O

click fraud protection

Výukový program pro skrytí trvalého oznámení v systému Android O, které se zobrazuje, když je spuštěna aplikace na pozadí nebo když se zobrazuje překryvná vrstva.

Aktualizace 25. 8. 2017: Tento tutoriál je nyní zastaralý, protože společnost Google opravila metodu, kterou používáme, abychom skryli přetrvávající oznámení na pozadí. Objevili jsme však další řešení tohoto problému a napsali o něm krátký návod, který najdete zde.

Android O se snaží přinést zásadní vylepšení operačního systému Android, který všichni známe a milujeme. Režim obrazu v obraze pro telefony, oznamovací kanály, inteligentní výběr textu, služby automatického vyplňování a pod kapotou mnoho a mnoho změn pro zvýšení výdrže baterie, výkonu a zabezpečení. Jednou funkcí, která má uživatelům pomoci vyřešit problémy s výdrží baterie a výkonem, je omezení procesů na pozadí. Aniž bychom zacházeli do přílišných podrobností, aplikace v systému Android O již nelze probudit z jejich registrovaného manifestu implicitní vysílací přijímače a ty již nemohou spustit služby na pozadí, aniž by prošly JobScheduler. Pokud chce aplikace spustit službu na pozadí, musí uživateli výslovně sdělit, že tak činí, odesláním upozornění. Když však aplikace běží na pozadí, Android O se nyní zdánlivě připíná 

další trvalé upozornění, které vám řekne, jaké aplikace jsou spuštěny. K tomu také dochází, když aplikace s příponou SYSTEM_ALERT_WINDOW povolení (jako je populární Soumrak app) aktuálně zobrazuje překryvnou vrstvu.

Trvalé oznámení Android O pro aplikace na pozadí a překryvné aplikace. Kredity: Ben Schoon \\ 9to5Google

Přestože jsou tato oznámení ve výchozím nastavení minimalizována, uživatel je nemůže zavřít ani trvale zablokovat v Nastavení. Toto chování je pro mnoho uživatelů velmi nepříjemné a vážně doufám, že nám Google poskytne způsob, jak toto upozornění deaktivovat ve finálním vydání Android O/Android 8.0. Pokud však ne, tam je stále cesta k trvale skrýt oznámení trvalých aplikací na pozadí. Ukážu, jak to udělat, v podrobném průvodci, po kterém bude následovat vysvětlení, jak to funguje, a také důležitá upozornění.


Požadavky:

  • Android O
  1. Pokud používáte Windows, nainstalujte ovladače USB pro váš konkrétní telefon (lze je najít tady).
  2. Stáhněte si Binární ADB pro váš konkrétní operační systém (Okna, Mac, Linux). Tyto odkazy budou vždy směřovat na nejnovější verzi binárního souboru, takže nemusíte prohledávat síť a hledat nejnovější verzi.
  3. Extrahujte obsah souboru ZIP, který jste stáhli, do snadno přístupné složky v počítači (například do složky Stažené soubory).
  4. Přejděte na svém telefonu do aplikace Nastavení a klepněte na možnost „O telefonu“.
  5. Najděte číslo sestavení a klepněte na něj 7krát, abyste aktivovali režim vývojáře. Jakmile bude povoleno, zobrazí se vyskakovací okno.
  6. Vraťte se do hlavní nabídky Nastavení a přejděte do Možnosti vývojáře, abyste mohli povolit režim ladění USB.
  7. Připojte telefon k počítači a přejeďte dolů po oznamovacím panelu, abyste změnili režim USB z „pouze nabíjení“ na režim „přenos souborů (MTP)“. To nemusí být pro váš telefon nutné.
  8. Na počítači přejděte do adresáře, do kterého jste extrahovali binární soubor ADB.
  9. Spusťte příkazový řádek/terminál v tomto adresáři ADB. Pro uživatele Windows to lze provést stisknutím Shift+kliknutí pravým tlačítkem a výběrem možnosti „otevřete příkazový řádek zde“.
  10. Jakmile jste v prostředí příkazového řádku nebo terminálu, zadejte následující příkaz: adb devices
  11. Tím se spustí démon ADB. Pokud spouštíte ADB poprvé, na telefonu se také zobrazí výzva k autorizaci připojení.
  12. Nyní znovu spusťte příkaz zařízení adb z kroku 10 a příkazový řádek/terminál vytiskne sériové číslo vašeho zařízení. Pokud ano, pak jste připraveni jít dál. Pokud ne, ovladače USB pravděpodobně nejsou správně nainstalovány.
  13. Vraťte se do příkazového řádku a zadejte následující příkaz: adb shell
  14. Nyní proveďte následující příkaz: cmd appops set android POST_NOTIFICATION ignore
  15. Nedostanete zprávu o úspěchu nebo tak něco, ale pokud nevidíte chybu, mělo by to fungovat. Nyní stačí restartovat telefon!

    Ano, uvědomuji si, že se jedná spíše o obrázky obrazovky telefonu než snímky obrazovky. Sám nemám zařízení kompatibilní se systémem Android O, tak jsem požádal TK, aby mi poslal obrázky.

  16. Pokud chcete tento příkaz vrátit, zadejte do příkazového řádku toto: cmd appops set android POST_NOTIFICATION allow

Jak to funguje

Pomocí skrytého rozhraní příkazového řádku pro App Ops, systém Android pro správu oprávnění pro uživatele, jsme schopni omezit oprávnění POST_NOTIFICATION z balíčku „android“. (Poznámka: nastavujeme jej na „ignorovat“ spíše než „odmítat“, protože „odmítnout“ by mohlo způsobit chyby.) Toto oprávnění jsem našel při pohledu na příslušný zdrojový kód pro AppOpsManager, který uvádí všechna možná oprávnění, která lze udělit/zrušit, z nichž mnohá nejsou dostupná v nastavení systému Android. Balíček „android“ ve skutečnosti odkazuje na „Android System“ AKA framework-res.apk, který je zodpovědný za trvalé upozornění, kterého se snažíme zbavit.

Tím, že v podstatě zrušíte oprávnění POST_NOTIFICATION systému Android, již nemůže zobrazovat oznámení! Zní to docela jednoduše, že? Bohužel je třeba si uvědomit jedno upozornění. „Systém Android“ je zodpovědný za více než jen toto oznámení, takže jakákoli další oznámení, která může zveřejnit, se již nebudou zobrazovat. To může zahrnovat upozornění na režim USB (které lze stále změnit prostřednictvím nastavení v možnostech vývojáře) a také některé další věci.

I když je to z naší strany docela drastické opatření, v současnosti je to jediný způsob, jak toto oznámení skrýt od rootování vašeho telefonu a úpravy samotného rámce, což je samozřejmě něco, co není mnoho uživatelů ochotno nebo schopné dělat. Upřímně doufám, že Google nabízí způsob, jak skrýt toto oznámení v budoucím vydání Android O, nebo ještě lépe toto oznámení úplně odstranit. Google chce pochopitelně zlepšit uživatelské prostředí tím, že uživatele upozorní, když na pozadí běží nějaká aplikace uživatel si toho nemusí být vědom, ale způsob, který zvolil, je nepříjemný pro ty z nás, kteří víme, co s každou aplikací jsme použitím.