Как включить / отключить Wi-Fi из приложения?

#java #android #kotlin #wifi #android-wifi

#java #Android #kotlin #wifi #android-wifi

Вопрос:

Я хочу включить / отключить Wi-Fi из моего приложения для Android. Как я могу это сделать?

Ответ №1:

 WifiManager wifi = (WifiManager) getSystemService(Context.WIFI_SERVICE);
wifi.setWifiEnabled(false); // true or false to activate/deactivate wifi
  

Вам также необходимо запросить разрешение в вашем AndroidManifest.xml :

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

Комментарии:

1. да, не забудьте добавить разрешение на использование в свой манифест android.permission. CHANGE_WIFI_STATE

2. @Codii, я знаю, что это устарело, но я пытаюсь сделать это в dialogfragment. Однако в нем говорится, что «Не удается разрешить метод ‘getSystemService(java.lang. Строка)’ Я не уверен в том, что мне нужно делать. И у меня есть эти разрешения

3. У меня сработало, спасибо, и вы можете проверить, wifi включить использование false или отключить использование true

Ответ №2:

Чтобы включить / отключить Wi-Fi в вашем приложении, вам необходимо использовать класс WifiManager. Создайте объект класса WifiManager, чтобы получить услуги Wi-Fi.

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

wifi.setWifiEnabled(false);//Turn off Wifi

wifi.setWifiEnabled(true);//Turn on Wifi
  

И вы должны указать следующие разрешения в AndroidManifest.xml

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

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

Комментарии:

1. Это более полный ответ. Включает в себя все необходимые разрешения.

2. когда я делаю это в своем проекте, но при выполнении этого кода система выдает подсказку, в которой говорится, что приложение пытается использовать wlan, разрешает ли это. и это появляется каждый раз! могу ли я включить wlan без окна запроса.

Ответ №3:

попробуйте этот код

  Intent gpsOptionsIntent = new Intent(  android.provider.Settings.ACTION_WIFI_SETTINGS);  
            startActivityForResult(gpsOptionsIntent,0); 
  

Комментарии:

1. спасибо, но я не хочу открывать настройки. я хочу отключить или включить непосредственно из моего приложения.

Ответ №4:

Чтобы включить / отключить Wi-Fi из приложения в Android Q (Android 10), используйте панель настроек:

 val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
startActivityForResult(panelIntent, 0)
  

В предыдущих версиях Android это должно работать (соответствующие разрешения должны быть добавлены в файл AndroidManifest, см. Ответы выше):

 (context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
  

Результирующий код может выглядеть примерно так:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
    val panelIntent = Intent(Settings.Panel.ACTION_INTERNET_CONNECTIVITY)
    startActivityForResult(panelIntent, 0)
} else {
    (context?.getSystemService(Context.WIFI_SERVICE) as? WifiManager)?.apply { isWifiEnabled = true /*or false*/ }
}
  

Где context — ссылка на android.content.Context объект.

Ответ №5:

попробуйте это

 public void disableWifi(Context context, Boolean bool) {
    WifiManager wifi = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

    if(bool)
        wifi.setWifiEnabled(false);
    else
        wifi.setWifiEnabled(true);
}
  

Комментарии:

1. Хотя это может дать ответ на вопрос, следует также объяснить, как и почему.

Ответ №6:

 public class MainActivity extends AppCompatActivity {

    Switch btn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn = (Switch) findViewById(R.id.switch1);
        btn.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    toggleWiFi(true);
                    Toast.makeText(getApplicationContext(), "Wi-Fi Enabled!", Toast.LENGTH_LONG).show();
                } else {
                    toggleWiFi(false);
                    Toast.makeText(getApplicationContext(), "Wi-Fi Disabled!", Toast.LENGTH_LONG).show();
                }
            }
        });
    }

    public void toggleWiFi(boolean status){
        WifiManager wifiManager = (WifiManager)this.getSystemService(WIFI_SERVICE);
        if (status amp;amp; !wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(true);
        } else if (!status amp;amp; wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(false);
        }
    }
}
  

Добавьте разрешение пользователя в файлы манифеста