2012-04-05 20 views
43

Im automatizzando una procedura di test per le chiamate wifi e mi chiedevo c'è un modo per spegnere/su wifi tramite adb?Come disattivare Wifi tramite ADB?

Vorrei o disabilitare/abilitare il wifi o terminare la chiamata wifi (com.movial.wificall) e riavviarlo.

E 'possibile farlo tutto tramite comandi adb e shell?

Finora ho trovato:

android.net.wifi.WifiManager 
setWifiEnabled(true/false) 

Im solo non è sicuro come mettere insieme

risposta

81

Utilizzando "SVC" tramite ADB (radicata richiesto):

Enable:

adb shell su -c 'svc wifi enable' 

Disabilita:

adb shell su -c 'svc wifi disable' 

Utilizzando Eventi significativi tramite ADB:

adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings 
adb shell input keyevent 20 & adb shell input keyevent 23 

La prima attività linea di lancio "wifi.WifiSettings", che apre la pagina Impostazioni WiFi. La seconda riga simula la pressione dei tasti.

Ho provato queste due linee su un Droid X. Ma gli Eventi chiave sopra probabilmente devono essere modificati in altri dispositivi a causa del diverso layout delle Impostazioni.

Ulteriori informazioni su "keyevents" here.

+1

Grazie mille per il post. Non è esattamente la stessa cosa sul mio telefono, ma da quando hai postato gli eventi di input ho capito che sono gli eventi chiave 19 e 23. Grazie ancora. :) – Nefariis

+1

Ok, hai capito? Sì, l'ho provato su un Droid X, non ero sicuro di quale telefono avessi :) –

+0

A mio parere, la risposta di Berkk è molto migliore (in particolare meno hacky). – karni

37

ero alla ricerca per lo stesso per attivare il Bluetooth/off, e ho trovato questo:

adb shell svc wifi enable|disable 
+2

Ho provato a utilizzare questo codice su 6 dispositivi diversi che vanno da Gingerbread a JellyBean, rootato a non root e non ho potuto farlo funzionare su nessuno di essi. Su quali dispositivi sei in grado di farlo funzionare? – Nefariis

+6

@Nefarii - per questo ho avuto bisogno di richiedere adb shell nel dispositivo ..... quindi richiesta su autorizzazione .... quindi sono stato in grado di eseguire correttamente questi comandi. – dell116

+2

Assicurarsi che l'accesso root funzioni. – muslidrikk

22

modo semplice per passare wifi su dispositivi non-radicati è quello di utilizzare semplice applicazione:

public class MainActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     WifiManager wfm = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
     try { 
      wfm.setWifiEnabled(Boolean.parseBoolean(getIntent().getStringExtra("wifi"))); 
     } catch (Exception e) { 
     } 
     System.exit(0); 
    } 
} 

AndroidManifest.xml:

<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> 

comandi adb:

$ adb shell am start -n org.mytools.config/.MainActivity -e wifi true 
$ adb shell am start -n org.mytools.config/.MainActivity -e wifi false 
+0

L'ho ottimizzato leggermente e ho cambiato l'attività per un BroadcastReceiver in modo che possa essere aggiunto a qualsiasi app e non mostrerà alcuna GUI. –

+0

@ ferdy182: puoi postare il codice in modo che altri possano usarlo e valutarlo? – GodMan

+1

@GodMan lo trovi qui https://plus.google.com/110502863648146989289/posts/Ri1Dcm6cn48 –

0

uso con citazioni

es: adb shell "svc wifi enable"

questo funzionerà :)

+0

Non riesco ancora a far funzionare anche questo, l'ho provato su la nota, nota2, una radice GS3 e una meraviglia. – Nefariis

+0

se si prova in un prompt dei comandi funzionerà .. Non aprirà nulla .. l'azione verrà eseguita in background – Sanal

2
adb shell "svc wifi enable" 

questo ha funzionato & rende l'azione in background senza aprire relativa opzione !!

1

Ho testato questo comando: adb shell am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings adb shell ingresso KeyEvent 19 & ingresso KeyEvent adb shell 19 & ingresso adb shell KeyEvent 23

e funziona solo su di finestra del prompt, forse a causa di qualche pilota

circa adb shell SVC wifi enable | disable Immagino che funzionano solo con il permesso di root

+0

Ciò è stato particolarmente utile: i miei emulatori Genymotion si avviano in modo casuale con la rete wifi disponibile ma a volte non selezionata. Ho usato questo: shell 'am start -a android.intent.action.MAIN -n com.android.settings/.wifi.WifiSettings; input keyevent 20; input keyevent 23 ' –

5
  1. Vai a posizione android/android-sdk/platform-tools
  2. spostamento + tasto destro del mouse
  3. aperta cmd qui e digitare i seguenti comandi

    1. adb shell
    2. su
    3. svc wifi enable/disable
  4. fatto !!!!!

1

posso solo fare:

settings put global wifi_on 0 
settings put global wifi_scan_always_enabled 0 

A volte, se fatto durante l'avvio (cioè per fissare bootloop such as this), essa non si applica bene e si può procedere anche consentendo prima modalità aereo:

settings put global airplane_mode_on 1 
settings put global wifi_on 0 
settings put global wifi_scan_always_enabled 0 

Altra opzione è quella di forzare questo con:

while true; do settings put global wifi_on 0; done 

Testato su Android 7 su LG G5 (SE) con mod di stock (senza root).

Problemi correlati