2010-10-14 24 views
67

Korzystanie z klasy Łączność Menedżer możemy uzyskać dostęp do obu WiFi lub sieci internetowej:Android: Jak włączyć/wyłączyć Wifi lub Internet Programowo

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) { 
    // ... 
} 

gdzie 0 i 1 odpowiednio odnosi się do telefonii komórkowej i WiFi

Jeśli moje urządzenie z Androidem jest podłączone do obu, czy możemy przełączać się między dowolnymi sieciami, czy możemy wyłączyć którąkolwiek z sieci? Podobnie jak przy użyciu funkcji:

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

Odpowiedz

147

Znam włączania lub wyłączania WiFi:

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

gdzie status może być true lub false jak na wymagania.

Edit:

Trzeba również następujące uprawnienia w swoim pliku manifestu:

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

+2

Witam! Czy jest taki sam sposób na włączenie sieci mobilnej? – Yarovoy

+43

Również w manifeście: '' –

+2

Czy to różni się od wifiManager.reconnect()? A co z wifiManager.reassociate()? Również w powyższym podejściu, jeśli chcesz zresetować WiFi, możesz zadzwonić do wifiManager.setWifiEnabled (false) i wifiManager.setWifiEnabled (true) z powrotem do tyłu? A może musisz najpierw go wyłączyć, a następnie poczekać na sygnał (odbiornik nadawczy itp.) Przed ponownym włączeniem? – Marchy

10

complet rozwiązanie ..

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

Brak połączenia z Menedżerem Wi-Fi z konfiguracją Wi-Fi: wifi.addNetwork (wc); –

+3

Dlaczego chcesz zakodować swój SSID i hasło? To nie jest dobry pomysł. – lifeson106

1

dodać to uprawnienie w swoim manifeście i nie używać powyższy kod, aby zmienić stan WiFi:

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

Aby włączyć wyłączyć Wifi użyć klasy WifiManager dostać systemu (Android urządzenia) usługi WiFi:

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

teraz obiekt wifi klasy WifiManager służy do uzyskania statusu wiFi:

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

A co najważniejsze nie zapomnij podać następujące uprawnienia w pliku manifestu 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" /> 

Aby uzyskać szczegółowe informacje oraz pełny kod przykładowy projektu dla włączyć/wyłączyć Wi-Fi na Androidzie wizyty my website link.

26

Aby włączyć WiFi:

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

Aby wyłączyć WiFi:

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

Uwaga: Aby przejść ze stanu WiFi, musimy dodać następujące uprawnienia wewnątrz AndroidManifest.xml file:

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

wymagany jest tylko CHANGE_WIFI_STATE, przynajmniej w systemie Android 4.2 – voghDev

+1

UPDATE_DEVICE_STATS jest przeznaczony tylko dla aplikacji systemowych – marienke

Powiązane problemy