Android: как включить/отключить Wi-Fi или подключение к Интернету

Используя класс Connectivity Manager, мы можем получить доступ к Wi-Fi или интернет-сети:

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

где 0 и 1 соответственно относятся к мобильному и Wi-Fi-соединению

Если мое Android-устройство подключено к обоим, можно ли переключаться между любой сетью или отключить какую-либо сеть? Подобно использованию функции:

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

Ответ 1

Я знаю о включении или отключении Wi-Fi:

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

где статус может быть true или false согласно требованию.

Редактировать:

Вам также необходимы следующие разрешения в файле манифеста:

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

Ответ 2

Включение Wi-Fi:

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

Отключить WiFi:

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

Примечание: Чтобы получить доступ к состоянию WiFi, мы должны добавить следующие разрешения в файл AndroidManifest.xml:

android.permission.ACCESS_WIFI_STATE
android.permission.UPDATE_DEVICE_STATS 
android.permission.CHANGE_WIFI_STATE

Ответ 3

Полное решение:

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

Ответ 4

Чтобы включить отключить Wi-Fi, используйте класс WifiManager для получения услуг системы (Android-устройства) для Wi-Fi:

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

Теперь объект wifi класса WifiManager используется для получения статуса wifi:

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

И самое главное не забудьте дать следующее разрешение в вашем файле манифеста 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" />

Чтобы получить подробную информацию и полный образец кода проекта для включения/отключения Wi-Fi на Android, посетите ссылку на мой сайт.

Ответ 5

добавьте это разрешение в свой манифест и используйте приведенный выше код для изменения состояния 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"/>

Ответ 6

Я не мог получить доступ к объекту контекста напрямую.
Мое решение заключается в следующем:

Context appContext = Android.App.Application.Context;
var wifiManager = (WifiManager)appContext.GetSystemService(WifiService);
wifiManager.SetWifiEnabled(state);

Также мне пришлось изменить некоторые записи, например. WIFI_SERVICE против WifiService.

Ответ 7

Можно включить/отключить Wi-Fi на устройствах до Android 10, используя следующий код:

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

wifiManager.setWifiEnabled (статус);

Но обратите внимание, что это невозможно сделать на Android 10, и, вероятно, тоже впереди.
https://issuetracker.google.com/issues/141011684