Ukryj powiadomienie VPN w Androidzie bez zatrzymywania tunelu
Android może pokazywać trzy różne powiadomienia VPN. Sprawdź, która aplikacja jest właścicielem widocznego powiadomienia, co naprawdę zmienia każda kontrolka i co dalej działa.
Możesz ukryć powiadomienie, że VPN działa, a tunel będzie działał dalej bez niego. To zaskakuje ludzi, bo komunikat i połączenie wydają się jednym obiektem. Nie są. W większości telefonów z Androidem wpis w panelu powiadomień, klucz na pasku stanu i powiadomienie działającej usługi mogą pochodzić od trzech różnych właścicieli, a tylko jeden z nich słucha uprawnienia aplikacji do powiadomień. Ustalenie, co wolno usunąć, zaczyna się od sprawdzenia, kto opublikował wiersz, na który patrzysz.
Trzy powiadomienia, trzech właścicieli
Pierwszym właścicielem jest sama aplikacja VPN, która zwykle publikuje trwałe powiadomienie z akcją połączenia lub rozłączenia i licznikiem sesji. Drugim jest własny wskaźnik VPN Androida: SystemUI rysuje ikonę klucza i, w zależności od wersji i producenta, wiersz na poziomie systemu, który zgłasza aktywną sieć VPN. Trzecim jest powiadomienie o polityce urządzenia, którym steruje profil służbowy lub aplikacja administratora. Żadne z nich nie jest tym samym obiektem, nawet gdy stoją obok siebie w panelu.
Uporządkuj komunikat, zanim dotkniesz przełącznika:
| Notice | Who controls it |
|---|---|
| App-owned ongoing notice | The app's notification channel; a long-press shows the channel name and the owning package |
| Foreground-service notice | The service visibility Android requires while the tunnel runs; the app cannot simply drop it |
| System VPN indicator | SystemUI or the manufacturer, driven by the VPN network state rather than by the app's channel |
| Work-policy notice | The administrator or work-profile policy; the phone user may not have the switch at all |
To, jakie kontrolki widzisz, zależy od wersji Androida, kompilacji producenta i kanału utworzonego przez aplikację. Szary przełącznik to stwierdzenie o polityce, a nie zaproszenie do jej obejścia. Jeśli przełącznika nie ma w twojej kompilacji, uczciwa odpowiedź brzmi: tego konkretnego powiadomienia nie wolno ci usuwać.
Znajdź pakiet kryjący się za wierszem
Przytrzymaj powiadomienie i otwórz jego ustawienia, zanim przeczytasz cokolwiek innego. Ekran, na który trafisz, nazywa kanał, a od Androida 8 ten kanał należy do dokładnie jednego pakietu. Jeśli kanał nazywa się na przykład stan VPN, a aplikacja jest twoim klientem, powiadomienie należy do aplikacji i stroną do sprawdzenia jest ekran ustawień aplikacji. Jeśli trafisz na stronę systemową bez żadnego kanału, patrzysz na wskaźnik platformy i aplikacja nie może ci pomóc.
Gdy długie przytrzymanie nie mówi dość, jedno wywołanie adb wymienia, co jest naprawdę opublikowane i przez kogo: adb shell dumpsys notification --noredact, a następnie wyszukaj w wyniku podejrzany pakiet. Potrzebujesz pakietu, który opublikował powiadomienie, oraz identyfikatora kanału, a nie czegoś, co można by tam edytować. Traktuj wynik jak diagnozę, bo nic na tej liście nie zmienia powiadomienia.
Na zarządzanym telefonie odpowiedź bywa nudna: powiadomienie pochodzi z aplikacji polityki urządzenia, a osoba trzymająca telefon nie jest osobą, która może je wyłączyć. W takim przypadku konsola administratora jest jedyną obsługiwaną kontrolą, a własne ustawienia telefonu pozostają szare, niezależnie od znalezionego menu.
Co naprawdę zmienia uprawnienie w Androidzie 13
Android 13 uczynił powiadomienia uprawnieniem czasu wykonania, więc aplikacja kierująca się na API 33 musi zapytać, zanim cokolwiek opublikuje. Odmów tej prośby, a powiadomienia aplikacji przestaną pojawiać się w panelu, co wygląda jak poszukiwane rozwiązanie. Ale usługa pierwszoplanowa za VPN nadal działa, a system wciąż pokazuje ją w Menedżerze zadań, nawet gdy jej powiadomienie zniknęło z panelu. Sama autoryzacja VPN pozostaje nietknięta: tunel stoi, dopóki go nie rozłączysz lub nie cofniesz zgody aplikacji na VPN.
Ta wymiana jest gorsza, niż wygląda, bo powiadomienie jest też najszybszym sposobem zobaczenia sesji i jej zakończenia. Usuń je, a utrudnisz rozumienie telefonu, nie zmieniając niczego w routingu. Dokumentacja uprawnienia do powiadomień opisuje zachowanie panelu; nie opisuje obsługiwanego sposobu wyciszenia działającego tunelu.
Jest jeszcze jeden szczegół wersji, który warto znać: powiadomienie usługi pierwszoplanowej jest wymagane przez model usługi i aplikacja nie może go po prostu ukryć tylko dlatego, że odmówiłeś uprawnienia. Niektóre kompilacje zostawiają widoczną wersję skróconą, inne przenoszą dowód do Menedżera zadań, a ta różnica jest wyborem producenta, a nie ustawieniem, które przeoczyłeś.
Tryb demonstracyjny i sztuczki z ikonami nie są rozwiązaniem
Znajdziesz porady o trybie demonstracyjnym, o ukrywaniu ikon nieudokumentowanymi poleceniami adb i o błędzie interfejsu, przez który klucz znika. Wszystko to zmienia prezentację. Nic z tego nie zmienia routingu, polityki ani autoryzacji VPN, którą śledzi system, a telefon, którego stan sieci jest niewidoczny, trudniej zdiagnozować niż ten z dodatkowym wierszem w panelu.
Ikona połączenia aplikacji też nie jest kontrolą stanu. Tunel może być wyłączony, podczas gdy stary interfejs lub nieaktualne powiadomienie zostaje, a lokalna usługa filtrująca może podnieść klucz VPN, nie wysyłając ani jednego bajtu do zdalnego wyjścia. Sprawdzaj rzeczywisty stan w systemowych ustawieniach VPN, a nie w panelu.
Co bym zmienił, po kolei
Zacznij od ustalenia właściciela, a potem używaj tylko kontrolki, którą ten właściciel oferuje. Jeśli powiadomienie należy do aplikacji i jest opcjonalne, wyłącz ten kanał, a kanał usługi zostaw w spokoju. Jeśli to wskaźnik systemowy, zaakceptuj go, bo zgłasza fakt o urządzeniu, a nie reklamuje aplikację. Na zarządzanym urządzeniu zatrzymaj się na polityce administratora i nie szukaj obejścia.
Potem potwierdź, że nadal masz obsługiwany sposób sprawdzenia tunelu i rozłączenia go, czy to ekran samej aplikacji, czy strona systemowych ustawień VPN. Telefon z jednym banerem mniej i jasnym sposobem zakończenia sesji to wynik, którego chcesz. Odwrotność, cichszy panel i brak pojęcia, czy ruch jest routowany, nie jest ulepszeniem.