Ukryj trwałe powiadomienie o aplikacjach działających w tle i nakładkach w systemie Android O

Samouczek dotyczący ukrywania trwałego powiadomienia w Androidzie O, które pokazuje, kiedy działa aplikacja w tle lub kiedy wyświetla się nakładka.

Aktualizacja 25.08.17: Ten samouczek jest już nieaktualny, ponieważ Google załatał metodę, której używamy do ukrywania trwałego powiadomienia w tle. Odkryliśmy jednak inne obejście tego problemu i napisaliśmy na ten temat krótki samouczek znajdziesz tutaj.

Android O chce wprowadzić duże ulepszenia do systemu operacyjnego Android, który wszyscy znamy i kochamy. Tryb obrazu w obrazie dla telefonów, kanały powiadomień, inteligentny wybór tekstu, usługi automatycznego uzupełniania i wiele, wiele zmian pod maską poprawiających żywotność baterii, wydajność i bezpieczeństwo. Jedną z funkcji, która ma pomóc użytkownikom rozwiązać problemy z żywotnością baterii i wydajnością, są ograniczenia procesów w tle. Nie wdając się w zbyt wiele szczegółów, aplikacji w systemie Android O nie można już wybudzić z rejestru w manifeście ukrytych odbiorników rozgłoszeniowych i nie mogą już uruchamiać usług w tle bez przechodzenia przez nie Harmonogram zadań. Jeśli aplikacja chce uruchomić usługę w tle, musi wyraźnie poinformować o tym użytkownika, publikując powiadomienie. Jednak gdy aplikacja działa w tle, Android O pozornie się włącza 

inny trwałe powiadomienie informujące, jakie aplikacje są uruchomione. Dzieje się tak również wtedy, gdy aplikacja z rozszerzeniem SYSTEM_ALERT_WINDOW pozwolenie (takie jak popularne Zmierzch app) aktualnie wyświetla nakładkę.

Trwałe powiadomienia Androida O dla aplikacji działających w tle i nakładek. Kredyty: Ben Schoon \\ 9to5Google

Chociaż powiadomienia te są domyślnie zminimalizowane, użytkownik nie może ich odrzucić ani trwale zablokować w Ustawieniach. To zachowanie jest bardzo irytujące dla wielu użytkowników i mam nadzieję, że Google umożliwi nam wyłączenie tego powiadomienia w ostatecznej wersji Androida O/Android 8.0. Jeśli jednak tego nie zrobią, nie Jest wciąż jest sposób trwale ukryj trwałe powiadomienie o aplikacjach działających w tle. Pokażę, jak to zrobić, w przewodniku krok po kroku, po którym zamieszczę wyjaśnienie, jak to działa, oraz ważne zastrzeżenia.


Wymagania:

  • Android O
  1. Zainstaluj sterowniki USB dla swojego konkretnego telefonu, jeśli korzystasz z systemu Windows (można je znaleźć Tutaj).
  2. Pobierz Binarny ADB dla konkretnego systemu operacyjnego (Okna, Prochowiec, Linuksa). Linki te zawsze będą wskazywały najnowszą wersję pliku binarnego, więc nie musisz przeszukiwać sieci w poszukiwaniu najnowszej.
  3. Wyodrębnij zawartość pobranego pliku ZIP do łatwo dostępnego folderu na komputerze (np. folderu Pobrane).
  4. Przejdź do aplikacji Ustawienia na swoim telefonie i wybierz opcję „Informacje o telefonie”.
  5. Znajdź numer kompilacji i dotknij go 7 razy, aby włączyć tryb programisty. Po włączeniu zobaczysz wyskakujące okienko.
  6. Wróć do głównego menu Ustawienia i wejdź do Opcji programisty, aby włączyć tryb debugowania USB.
  7. Podłącz telefon do komputera i przesuń w dół panel powiadomień, aby zmienić tryb USB z „tylko ładowanie” na tryb „transfer plików (MTP)”. Może to nie być konieczne w przypadku Twojego telefonu.
  8. Na komputerze przejdź do katalogu, w którym rozpakowałeś plik binarny ADB.
  9. Uruchom wiersz poleceń/terminal w tym katalogu ADB. W przypadku użytkowników systemu Windows można to zrobić, naciskając Shift i klikając prawym przyciskiem myszy, a następnie wybierając opcję „Otwórz tutaj wiersz poleceń”.
  10. Gdy znajdziesz się w wierszu poleceń lub środowisku terminala, wprowadź następujące polecenie: adb devices
  11. Spowoduje to uruchomienie demona ADB. Jeśli po raz pierwszy uruchamiasz ADB, na telefonie pojawi się również monit z prośbą o autoryzację połączenia.
  12. Teraz ponownie uruchom polecenie adb devices z kroku 10, a wiersz poleceń/terminal wydrukuje numer seryjny twojego urządzenia. Jeśli tak, jesteś gotowy, aby przejść dalej. Jeśli nie, oznacza to, że sterowniki USB prawdopodobnie nie zostały poprawnie zainstalowane.
  13. Wróć do wiersza poleceń i wprowadź następujące polecenie: adb shell
  14. Teraz wykonaj następujące polecenie: cmd appops set android POST_NOTIFICATION ignore
  15. Nie otrzymasz komunikatu o powodzeniu ani nic, ale dopóki nie zobaczysz błędu, powinno zadziałać. Teraz wystarczy ponownie uruchomić telefon!

    Tak, zdaję sobie sprawę, że są to zdjęcia ekranu telefonu, a nie zrzuty ekranu. Sam nie mam urządzenia kompatybilnego z Androidem O, więc poprosiłem TK o przesłanie mi zdjęć.

  16. Jeśli chcesz cofnąć to polecenie, wpisz to w wierszu poleceń: cmd appops set android POST_NOTIFICATION allow

Jak to działa

Korzystając z ukrytego interfejsu wiersza poleceń dla App Ops, systemu zarządzania uprawnieniami dostępnego dla użytkownika w systemie Android, możemy ograniczyć uprawnienia POST_NOTIFICATION z pakietu „Android”. (Uwaga: ustawiamy opcję „ignoruj”, a nie „odmawiaj”, ponieważ „odmawiaj” może powodować pewne błędy.) Znalazłem to pozwolenie, przeglądając odpowiedni kod źródłowy Menedżer aplikacji, który zawiera listę wszystkich możliwych uprawnień, które można przyznać/odwołać, a wiele z nich nie jest dostępnych w ustawieniach Androida. Pakiet „Android” w rzeczywistości odnosi się do „Systemu Android” AKA framework-res.apk, który jest odpowiedzialny za ciągłe powiadomienia, których próbujemy się pozbyć.

Zasadniczo cofając pozwolenie POST_NOTIFICATION systemu Android, nie może on już wyświetlać powiadomień! Brzmi całkiem prosto, prawda? Niestety należy pamiętać o pewnym zastrzeżeniu. „System Android” odpowiada za coś więcej niż tylko to powiadomienie, więc wszelkie inne powiadomienia, które może publikować, nie będą już wyświetlane. Może to obejmować powiadomienie o trybie USB (które nadal można zmienić za pomocą ustawień w Opcjach programisty), a także kilka innych rzeczy.

Chociaż jest to dość drastyczny krok z naszej strony, obecnie jest to jedyny sposób na ukrycie tego powiadomienia od zrootowania telefonu i modyfikacji samego frameworka, co oczywiście jest czymś, czego niewielu użytkowników chce lub nie może do zrobienia. Mam szczerą nadzieję, że Google zaoferuje sposób na ukrycie tego powiadomienia w przyszłej wersji Androida O lub jeszcze lepiej całkowite usunięcie tego powiadomienia. Google, co zrozumiałe, chce poprawić wygodę użytkownika, powiadamiając go, gdy aplikacja działa w tle użytkownik może nie być tego świadomy, ale wybrana przez niego metoda jest irytująca dla tych z nas, którzy wiedzą, czym jesteśmy w każdej aplikacji za pomocą.