In Android 6, come negare l'autorizzazione di un'app per accedere alla rete?


30

In Android 6, l'utente ha (finalmente!) La possibilità di approvare o negare autorizzazioni specifiche a un'app.

Tuttavia, non sono riuscito a trovare un modo per approvare o negare l'accesso alla rete, tramite Wi-Fi o tramite connessione dati cellulare. L'autorizzazione pertinente appare in "Altre funzionalità dell'app" ed è solo a scopo informativo - apparentemente non c'è modo di cambiarlo.

Ecco un esempio con l'app Chess Free:

immagine dello schermo


4
Non puoi. Fammi trovare una fonte credibile ma non puoi farlo in modo nativo poiché danneggerebbe molto gli interessi di Google (annunci, cioè). Modifica: Trovi questo articolo interessante: androidpolice.com/2015/06/06/…
Firelord

Risposte:


27

Non sarai in grado di raggiungere il successo attraverso il meccanismo nativo di Android.

Cody Toombs di Android Police lo ha sottolineato molto bene nell'articolo: Android M non chiederà mai agli utenti il ​​permesso di usare Internet, e probabilmente va bene .

Nella sezione Autorizzazioni normali e pericolose del documento Panoramica delle autorizzazioni , Google ha osservato:

Le autorizzazioni sono divise in diversi livelli di protezione.

Esistono due livelli di protezione che interessano le app di terze parti: autorizzazioni normali e pericolose.

  • Le autorizzazioni normali riguardano aree in cui l'app deve accedere a dati o risorse al di fuori della sandbox dell'app, ma in cui esiste un rischio minimo per la privacy dell'utente o il funzionamento di altre app . Ad esempio, l'autorizzazione per impostare il fuso orario è un'autorizzazione normale.

    Se un'app dichiara nel manifest che ha bisogno di una normale autorizzazione, il sistema concede automaticamente tale autorizzazione al momento dell'installazione. Il sistema non richiede all'utente di concedere le autorizzazioni normali e gli utenti non possono revocare tali autorizzazioni.

  • Le autorizzazioni pericolose coprono aree in cui l'app richiede dati o risorse che coinvolgono le informazioni private dell'utente o che potrebbero potenzialmente influire sui dati memorizzati dell'utente o sul funzionamento di altre app. Ad esempio, la capacità di leggere i contatti dell'utente è un'autorizzazione pericolosa. Se un'app dichiara di aver bisogno di un'autorizzazione pericolosa, l'utente deve concedere esplicitamente l'autorizzazione all'app.

(Enfasi mia)

Sorprendente o no, le seguenti autorizzazioni rientrano nell'elenco delle autorizzazioni normali :

  • CHANGE_NETWORK_STATE : consente alle applicazioni di modificare lo stato di connettività di rete, ovvero i dati mobili;
  • CHANGE_WIFI_STATE : consente alle applicazioni di modificare lo stato di connettività Wi-Fi;
  • INTERNET : consente alle applicazioni di aprire socket di rete.

Se ciò non bastasse, controlla qui le autorizzazioni gestite da AppOps . Se non trovi le tue autorizzazioni elencate lì, non sarai in grado di fare nulla con esso nella GUI.

Poiché metodi alternativi sono già ampiamente trattati in questo sito, fare riferimento a:


12
Grazie per la tua risposta. È deludente quando le funzionalità sono paralizzate non a causa di impossibilità tecniche ma a causa di ragioni di mercato.
dr01,

25

Potresti usare NetGuard (vedi il mio elenco di Internet Firewall per altre alternative), che funziona senza root e ti consente di bloccare selettivamente l'accesso a Internet per le app (WiFi o dati mobili, e anche sempre o solo se lo schermo è spento). Viene dallo sviluppatore di XPrivacy, quindi deve essere buono;)

Netguard Netguard Netguard
NetGuard (fonte: Google Play ; fare clic sulle immagini per varianti più grandi)

NetGuard è open source, quindi puoi trovarlo anche su F-Droid .

Aggiornamento: si noti che le versioni recenti di Netguard includono Google Ads e Firebase Analytics - due cose che IMHO non ha attività commerciali in un'applicazione firewall (o qualsiasi altra sicurezza) - che molto probabilmente è la ragione per cui non è più aggiornato su F-Droid repository ufficiale (ancora disponibile nel mio con le avvertenze appropriate).


1
La variante F-Droid di NetGuard ha effettivamente aggiunto funzionalità oltre a quelle consentite nel Play Store.
Dev

Può bloccare gli annunci in-app?
Immortal Player il

1
@ImmortalPlayer se a un'app viene negato l'accesso alla rete, non può neanche caricare annunci. Quindi la risposta sarebbe "sì".
Izzy



3

L'accesso a Internet non può essere negato per le singole app su Android in modo nativo. Gli annunci sono le principali fonti di entrate di Google.

Tuttavia, se stai utilizzando Opera Max, puoi limitare l'accesso a Internet alle singole app. Puoi persino salvare i dati, grazie alla tecnologia di compressione di Opera.

Installa Opera Max dal Play Store. È completamente gratuito e facile da usare. Nessuna radice richiesta.


Aggiornamento : non è più un fan di Opera Max dopo aver iniziato a pubblicare troppi annunci.
NVZ

3

Alla luce di alcuni eventi recenti , vorrei migliorare questa domanda introducendo Triangle di Google. Scaricalo su APKMirror o APKPure e installalo con ADB .

Ecco alcune delle caratteristiche principali.

Dati mobili utilizzati Chiedi di consentire i dati per le app bloccate Spegni quando sei su Wi-Fi Blocca tutto per impostazione predefinita

Non è una VPN, blocca localmente l'accesso delle tue app a Internet. Pensala come una nuova autorizzazione, proprio come usare la videocamera o avere accesso alla tua posizione.


1
Questo utilizza una VPN / proxy come app simili? Blocca l'accesso dalle librerie native?
hackel,

1
@hackel l'ho installato (ho dovuto eseguire il sideload poiché non era disponibile nel mio paese). Mi ha chiesto di abilitare una VPN. Inoltre, non sembra bloccare il WIFI.
Bort

3

Preambolo

Potrebbe essere tardi, ma vorrei aggiungere la mia opinione sulla tua domanda, per completezza. Questa risposta è un modo infallibile per bloccare l'accesso a Internet a un'applicazione. Gli svantaggi? Non blocca gli Intenti, è contorto e potrebbe causare l'arresto anomalo dell'app di destinazione e richiede i privilegi di root .

È stato testato e confermato per funzionare fino ad Android 7.1.2.


Fondamento logico

Come indicato dagli altri risponditori, qualsiasi app che desideri accedere a Internet, deve dichiarare l' android.permission.INTERNETautorizzazione innegabile al suo interno AndroidManifest.xml. Come fa Android a ricordare quali autorizzazioni sono state richieste da un'app? Salvandoli all'interno packages.xml, un file protetto situato in /data/system.

Inutile dire che qualcuno come noi potrebbe essere interessato a modificare detto file, allo scopo di aggiungere o rimuovere un'autorizzazione, a condizione che dispongano dei privilegi di root. Questo è il nostro modo per negare l'accesso a Internet a un'app senza VPN o software firewall.


Il packages.xmlfile

Il packages.xmlfile elenca tutte le app installate, insieme ai loro percorsi e autorizzazioni. Ogni app è posizionata tra i <package></package>tag; per la mia risposta, prenderò di mira Nova Launcher di TeslaCoil. La stanza dell'app nel file è la seguente:

    <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>

Il rientro viene riportato alla lettera dal file.


Procedura

Grazie alle conoscenze di cui sopra, possiamo ora procedere all'esame delle autorizzazioni di Nova Launcher, racchiuse tra <perms></perms>. Presto troveremo l'unico che dobbiamo modificare:

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

Per negare efficacemente l'accesso a Internet all'app, dobbiamo semplicemente eliminare l'intera linea e riavviare il nostro dispositivo. Commentarlo per un uso futuro è inutile: Android esamina questo file ad ogni avvio e eliminerà i tuoi commenti .


svantaggi

Seguendo questa procedura ti metterai in rete un'app che non può comunicare con Internet in alcun modo. Tuttavia, app e software scarsamente codificati destinati a Marshmallow e versioni successive potrebbero bloccarsi quando si tenta di connettersi a Internet , come fa Nova.

Inoltre, come sottolineato da Firelord, l'aggiornamento di un'app fa sì che le modifiche vengano ripristinate, annullando efficacemente i nostri sforzi e richiedendo di eliminare nuovamente l'autorizzazione.


Modifica di questa procedura

Per annullare ciò che abbiamo fatto sopra, tutto ciò che serve è aggiungere l'autorizzazione che abbiamo eliminato tra gli altri e riavviare il dispositivo.


disconoscimento

Non sono in alcun modo affiliato a Nova Launcher o ai suoi sviluppatori.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.