2010-10-14 37 views
67

Utilizzo della classe Connettività manager che possiamo ottenere l'accesso a WiFi o rete Internet:Android: Come attivare/disattivare il WiFi o connessione Internet a livello di programmazione

ConnectivityManager connec = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE); 

// ARE WE CONNECTED TO THE NET 
if (connec.getNetworkInfo(0).getState() == NetworkInfo.State.CONNECTED || 
    connec.getNetworkInfo(1).getState() == NetworkInfo.State.CONNECTED) { 
    // ... 
} 

dove 0 e 1 si riferisce rispettivamente a mobile e connessione wifi

Se il mio dispositivo Android è collegato a entrambi, possiamo passare da una qualsiasi delle reti o disabilitare la rete? Come l'utilizzo di una funzione:

connec.getNetworkInfo(0).setState(NetworkInfo.State.DISCONNECTED); 

risposta

147

So di abilitare o disabilitare wifi:

WifiManager wifiManager = (WifiManager)this.context.getSystemService(Context.WIFI_SERVICE); 
wifiManager.setWifiEnabled(status); 

cui stato può essere true o false secondo il requisito.

Edit:

È inoltre necessario le seguenti autorizzazioni nel file manifest:

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

+2

Ciao! C'è lo stesso modo per abilitare la rete mobile? – Yarovoy

+43

Anche al manifest: '' –

+2

Questo differisce da wifiManager.reconnect()? Che dire di wifiManager.reassociate()? Anche nell'approccio precedente se volessi resettare il WiFi potresti chiamare wifiManager.setWifiEnabled (false) e wifiManager.setWifiEnabled (true) back to back? O dovresti prima disabilitarlo, quindi attendere qualche segnale (ricevitore broadcast, ecc.) Prima di attivarlo di nuovo? – Marchy

10

complet soluzione ..

try { 
WifiManager wifi = (WifiManager) 
context.getSystemService(Context.WIFI_SERVICE); 

WifiConfiguration wc = new WifiConfiguration(); 
wc.SSID = "\"SSIDName\""; 
wc.preSharedKey = "\"password\""; 
wc.hiddenSSID = true; 
wc.status = WifiConfiguration.Status.ENABLED; 

        wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.TKIP); 
wc.allowedGroupCiphers.set(WifiConfiguration.GroupCipher.CCMP); 
    wc.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.TKIP); 
    wc.allowedPairwiseCiphers.set(WifiConfiguration.PairwiseCipher.CCMP); 
    wc.allowedProtocols.set(WifiConfiguration.Protocol.RSN); 


    boolean b=wifi.isWifiEnabled(); 
    if(b){ 
    wifi.setWifiEnabled(false); 
    Toast.makeText(context,"yes", Toast.LENGTH_SHORT).show(); 
    }else 
    { 
    wifi.setWifiEnabled(true); 
    Toast.makeText(context, "no", Toast.LENGTH_SHORT).show(); 
    } 
    //Log.d("WifiPreference", "enableNetwork returned " + b); 

      } catch (Exception e) { 

       e.printStackTrace(); 
      } 

....... ..................................... http://amitkumar-android.blogspot.com/p/installation-steps.html

+1

Manca la chiamata per impostare il gestore wifi con la configurazione wifi: wifi.addNetwork (wc); –

+3

Perché scrivere codice SSID e password? Non è una buona idea. – lifeson106

1

aggiungere questa autorizzazione nel vostro manifesto e che utilizzare il codice qui sopra per cambiare WiFi Stato:

<!--permission ge enable and disable WIFI in android--> 
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
3

Per attivare disattivare il WiFi utilizzare la classe WifiManager per ottenere sistema (dispositivo Android) servizi per wi-fi:

WifiManager wifi =(WifiManager)getSystemService(Context.WIFI_SERVICE); 

Ora, oggetto wifi della classe WifiManager viene utilizzata per ottenere lo stato wifi:

if(wifi.isWifiEnabled()) 
    //Perform Operation 
else 
    //Other Operation 

E cosa più importante non dimenticare di dare l'autorizzazione seguente nel file manifest Android:

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/> 
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" /> 
<uses-permission android:name="android.permission.WAKE_LOCK" /> 

Per ottenere informazioni dettagliate e codice di esempio completo del progetto per attivare/disattivare il WiFi in visita Android my website link.

26

Per attivare la connessione Wi-Fi:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
wifi.setWifiEnabled(true); 

Per disattivare WiFi:

WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE); 
wifi.setWifiEnabled(false); 

Nota: Per accedere con lo stato Wi-Fi, dobbiamo aggiungere seguenti autorizzazioni all'interno del AndroidManifest.file xml:

android.permission.ACCESS_WIFI_STATE 
android.permission.UPDATE_DEVICE_STATS 
android.permission.CHANGE_WIFI_STATE 
+4

solo CHANGE_WIFI_STATE è necessario, almeno in Android 4.2 – voghDev

+1

UPDATE_DEVICE_STATS è solo per le app di sistema – marienke

Problemi correlati