W Androidzie 6, jak odmówić zgody aplikacji na dostęp do sieci?

30

W Androidzie 6 użytkownik ma (wreszcie!) Możliwość zatwierdzenia lub odmowy określonych uprawnień do aplikacji.

Nie mogłem jednak znaleźć sposobu na zatwierdzenie lub odmowę dostępu do sieci, zarówno przez Wi-Fi, jak i komórkową transmisję danych. Odpowiednie uprawnienie pojawia się w „Inne możliwości aplikacji” i ma jedynie charakter informacyjny - najwyraźniej nie ma sposobu, aby je zmienić.

Oto przykład z aplikacją Chess Free:

zrzut ekranu

dr01
źródło
4
Nie możesz Pozwól mi znaleźć wiarygodne źródło, ale nie możesz tego zrobić natywnie, ponieważ bardzo zaszkodziłoby to interesom Google (czyli reklamom). Edytuj: Ten artykuł byłby dla ciebie interesujący: androidpolice.com/2015/06/06/…
Firelord

Odpowiedzi:

27

Nie będziesz w stanie osiągnąć sukcesu dzięki natywnemu mechanizmowi Androida.

Cody Toombs z Android Police bardzo dobrze zauważył to w artykule: Android M nigdy nie poprosi użytkowników o pozwolenie na korzystanie z Internetu, a to prawdopodobnie w porządku .

W sekcji Normalne i niebezpieczne uprawnienia dokumentu Omówienie uprawnień Google zauważył:

Uprawnienia są podzielone na kilka poziomów ochrony.

Istnieją dwa poziomy ochrony, które wpływają na aplikacje stron trzecich: uprawnienia normalne i niebezpieczne.

  • Normalne uprawnienia obejmują obszary, w których aplikacja musi uzyskiwać dostęp do danych lub zasobów poza piaskownicą aplikacji, ale gdzie ryzyko związane z prywatnością użytkownika lub działaniem innych aplikacji jest niewielkie . Na przykład zezwolenie na ustawienie strefy czasowej jest normalnym pozwoleniem.

    Jeśli aplikacja oświadcza w swoim manifeście, że potrzebuje normalnego uprawnienia, system automatycznie przyznaje jej to uprawnienie podczas instalacji. System nie monituje użytkownika o przyznanie normalnych uprawnień, a użytkownicy nie mogą ich cofnąć.

  • Niebezpieczne uprawnienia obejmują obszary, w których aplikacja potrzebuje danych lub zasobów, które dotyczą prywatnych informacji użytkownika lub mogą potencjalnie wpłynąć na przechowywane dane użytkownika lub działanie innych aplikacji. Na przykład możliwość czytania kontaktów użytkownika jest niebezpiecznym zezwoleniem. Jeśli aplikacja zadeklaruje, że potrzebuje niebezpiecznego uprawnienia, użytkownik musi wyraźnie przyznać uprawnienia aplikacji.

(Moje podkreślenie)

Zaskakujące czy nie, następujące uprawnienia znajdują się na liście Normalnych uprawnień :

  • CHANGE_NETWORK_STATE - umożliwia aplikacjom zmianę stanu łączności sieciowej - tzn. Danych mobilnych;
  • CHANGE_WIFI_STATE - umożliwia aplikacjom zmianę stanu łączności Wi-Fi;
  • INTERNET - umożliwia aplikacjom otwieranie gniazd sieciowych.

Jeśli to nie wystarczy, sprawdź uprawnienia zarządzane przez AppOps tutaj . Jeśli nie znajdziesz tam swojego pozwolenia, nie będziesz mógł nic z tym zrobić w GUI.

Ponieważ alternatywne metody są już szeroko omówione na tej stronie, zapoznaj się z:

Firelord
źródło
12
Dzięki za odpowiedź. To rozczarowujące, gdy funkcje są sparaliżowane nie z przyczyn technicznych, ale z przyczyn rynkowych.
dr01
25

Możesz użyć NetGuard (zobacz moją listę zapór internetowych dla innych alternatyw), który działa bez rootowania i pozwala selektywnie blokować dostęp do Internetu dla aplikacji (Wi-Fi lub danych mobilnych, a nawet zawsze lub tylko wtedy, gdy ekran jest wyłączony). Pochodzi od twórcy XPrivacy, więc musi być dobry;)

Netguard Netguard Netguard
NetGuard (źródło: Google Play ; kliknij obrazy, aby wyświetlić większe warianty)

NetGuard jest open source, więc możesz go również znaleźć na F-Droid .

Aktualizacja: należy pamiętać, że najnowsze wersje Netguard obejmują Google Ads, a także Firebase Analytics - dwie rzeczy, które IMHO nie prowadzą działalności w zaporze (lub jakiejkolwiek innej aplikacji zabezpieczającej) - co najprawdopodobniej jest powodem, dla którego nie jest już aktualizowany w F-Droid's oficjalne repozytorium (nadal dostępne w kopalni z odpowiednimi ostrzeżeniami).

Izzy
źródło
1
Wersja F-Droid NetGuarda w rzeczywistości ma dodatkową funkcjonalność wykraczającą poza dozwoloną w Sklepie Play.
iDevW
Czy może blokować reklamy w aplikacji?
Immortal Player
1
@ImmortalPlayer, jeśli aplikacji odmówiono dostępu do sieci, nie może również ładować reklam. Tak więc odpowiedź brzmiałaby „tak”.
Izzy
3

Nie można odmówić dostępu do Internetu dla poszczególnych aplikacji na Androida natywnie. Reklamy są głównym źródłem przychodów Google.

Jeśli jednak używasz Opera Max, możesz ograniczyć dostęp do Internetu do poszczególnych aplikacji. Możesz nawet zapisywać dane, dzięki technologii kompresji Opery.

Zainstaluj Opera Max ze Sklepu Play. Jest całkowicie darmowy i łatwy w użyciu. Nie wymaga rootowania.

NVZ
źródło
Aktualizacja : Nie jest już fanem Opery Max po tym, jak zaczęli wyświetlać zbyt wiele reklam.
NVZ
3

W świetle ostatnich wydarzeń chciałbym poprawić to pytanie, wprowadzając Google Triangle . Pobierz na APKMirror lub APKPure i zainstaluj z ADB .

Oto niektóre z kluczowych funkcji.

Wykorzystano dane mobilne Poproś o zezwolenie na dane dla zablokowanych aplikacji Wyłącz po włączeniu Wi-Fi Domyślnie blokuj wszystko

To nie jest VPN, lokalnie blokuje dostęp twoich aplikacji do Internetu. Pomyśl o tym jak o nowym uprawnieniu, podobnie jak korzystanie z aparatu lub dostęp do swojej lokalizacji.

NatoBoram
źródło
1
Czy korzysta z VPN / proxy, podobnie jak podobnych aplikacji? Czy blokuje dostęp z bibliotek natywnych?
hackel
1
@hackel Zainstalowałem go (musiałem sideload, ponieważ powiedział, że nie jest dostępny w moim kraju). Poprosił mnie o włączenie VPN. Nie wydaje się również blokować WIFI.
Bort
3

Preambuła

Może być późno, ale dla uzupełnienia pragnę dodać własne podejście do twojego pytania. Ta odpowiedź jest niezawodnym sposobem blokowania dostępu do aplikacji do Internetu. Wady? Nie blokuje zamiarów, jest zawiłe i może spowodować awarię aplikacji docelowej oraz wymaga uprawnień roota .

Został przetestowany i potwierdzony do pracy z Androidem 7.1.2.


Racjonalne uzasadnienie

Jak wspomnieli inni odpowiedzieli, każda aplikacja, która chce uzyskać dostęp do Internetu, musi zadeklarować android.permission.INTERNETniezaprzeczalne pozwolenie w ramach swojej usługi AndroidManifest.xml. W jaki sposób Android pamięta jednak, jakich uprawnień zażądała aplikacja? Zapisując je w środku packages.xml, chroniony plik znajduje się pod adresem /data/system.

Jest rzeczą oczywistą, że ktoś taki jak my może być zainteresowany edycją wspomnianego pliku w celu dodania lub usunięcia uprawnienia, pod warunkiem, że ma uprawnienia root. Jest to nasz sposób na negowanie dostępu do Internetu do aplikacji bez VPN i oprogramowania zapory ogniowej.


packages.xmlplik

Do packages.xmllisty plików wszystkie zainstalowane aplikacje, wraz ze ścieżkami i uprawnienia. Każda aplikacja jest umieszczona między <package></package>tagami; ze względu na moją odpowiedź celuję w Nova Launcher od TeslaCoil. Sekcja aplikacji w pliku jest następująca:

    <package name="com.teslacoilsw.launcher" codePath="/data/app/com.teslacoilsw.launcher-1" nativeLibraryPath="/data/app/com.teslacoilsw.launcher-1/lib" publicFlags="944258628" privateFlags="0" ft="16075caace8" it="16075cac965" ut="16075cac965" version="53000" userId="10083" installer="com.android.packageinstaller">
        <sigs count="1">
            <cert index="7" key="3082034d30820235a0030201020204638fbad3300d06092a864886f70d01010b05003057315530530603550403134c726f636b7a35353535204f553d44726f69642046726565646f6d20556e6974204f3d44726f69642046726565646f6d20496e63204c3d556e6b6e6f776e20533d556e6b6e6f776e20433d4c4b301e170d3134313230353030343535375a170d3434313132373030343535375a3057315530530603550403134c726f636b7a35353535204f553d44726f69642046726565646f6d20556e6974204f3d44726f69642046726565646f6d20496e63204c3d556e6b6e6f776e20533d556e6b6e6f776e20433d4c4b30820122300d06092a864886f70d01010105000382010f003082010a0282010100818b312365be3e55f48989d43468880067464eca65aa3ba73305178311fc2a053c143182f6d2ea635b57dc327adf8a5a9b763c03f0a48c38530114e6979358d6bfca37d161ca6fe8bb0d80f061d7b67bc1456cdfc38e0cda2ebd05c48113f701140950f0fe4315de6b95c7504129abb2c1a61f1e4f1229fb83f474dbcd7dc957b84a1b8a2aa0157b223609d77980a3f579c93fbb24a6f9fbb5a8e207cccdf1add616c95c732d5c114c0168fdbd9c00ddf211c2b8886b9498a34f389025802e334f404b7e4eb75f6308f086e5bdac64db10053c7ff8d21a350b941d5394ffbe2bd037139134eb065c2317625e65d3f628aecf7965a0d70b02e68aa8371efd1fe50203010001a321301f301d0603551d0e04160414a4e66b693ecdf3241883e3eed668354e1531ba11300d06092a864886f70d01010b050003820101003992f3f461a290db767911a4a519f035fe0c34e597e2fba2e31371e260bd2fc8f9a93c35e6f06553d02588d2f8453ee784d2ba09a696e66304e3e01f7c6bdf5b2747fc73f79d00379cc94eefa542c8eb308318364df2fa1a9c6a7ef0669d08f7b1f8635d0d4331e2817d5aeb0854760116c29801cf915ef67d5c0e04861cad4fa7b96fe8f9a0baf0cda649cd35a7122142ba38b2d16d9d319a8604a41fe0025d89be87f84ce8fc080ab54c76a96f3d9b70b1a5f5e18e48768e3684bca8a950665e16a6d50cf0045949baebca876d55eeba52ea421f33009872d9d654f8f8caa1bb465d754694d4bf6cb92f3299fbec3781849b37e6ba23ffe3d6c20ecb9bc65d" />
        </sigs>
        <perms>
            <item name="com.android.launcher3.permission.READ_SETTINGS" granted="true" flags="0" />
            <item name="com.google.android.c2dm.permission.RECEIVE" granted="true" flags="0" />
            <item name="com.teslacoilsw.launcher.permission.C2D_MESSAGE" granted="true" flags="0" />
            <item name="android.permission.EXPAND_STATUS_BAR" granted="true" flags="0" />
            <item name="android.permission.WRITE_MEDIA_STORAGE" granted="true" flags="0" />
            <item name="android.permission.INTERNET" granted="true" flags="0" />
            <item name="android.permission.ACCESS_NETWORK_STATE" granted="true" flags="0" />
            <item name="android.permission.SET_WALLPAPER" granted="true" flags="0" />
            <item name="android.permission.SET_WALLPAPER_HINTS" granted="true" flags="0" />
            <item name="android.permission.VIBRATE" granted="true" flags="0" />
            <item name="android.permission.ACCESS_WIFI_STATE" granted="true" flags="0" />
            <item name="android.permission.WAKE_LOCK" granted="true" flags="0" />
        </perms>
        <proper-signing-keyset identifier="10" />
    </package>

Wgłębienie jest zgłaszane dosłownie z pliku.


Procedura

Uzbrojeni w powyższą wiedzę, możemy teraz przystąpić do badania uprawnień Nova Launcher, zawartych pomiędzy nimi <perms></perms>. Wkrótce znajdziemy jedyną, którą musimy edytować:

            <item name="android.permission.INTERNET" granted="true" flags="0" />

Aby skutecznie odmówić dostępu do Internetu aplikacji, wystarczy usunąć całą linię i ponownie uruchomić urządzenie. Komentowanie go do użycia w przyszłości jest bezużyteczne: Android sprawdza ten plik przy każdym uruchomieniu i usuwa twoje komentarze .


Wady

Po wykonaniu tej procedury otrzymasz aplikację, która nie może w żaden sposób komunikować się z Internetem. Jednak źle zakodowane aplikacje i oprogramowanie przeznaczone dla Marshmallow i nowszych mogą ulec awarii podczas próby połączenia z Internetem , podobnie jak Nova.

Co więcej, jak zauważył Firelord, aktualizacja aplikacji powoduje cofnięcie zmian, skutecznie unieważniając nasze wysiłki i wymagając ponownego pozwolenia na usunięcie.


Zmiana tej procedury

Aby cofnąć to, co zrobiliśmy powyżej, wystarczy dodać zezwolenie, które usunęliśmy z powrotem, i ponownie uruchomić urządzenie.


Zrzeczenie się

Nie jestem w żaden sposób związany z Nova Launcher lub jej twórcami.

Sprzedawca Maski Śmierci
źródło