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.INTERNET
niezaprzeczalne 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.xml
plik
Do packages.xml
listy 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.