如何从应用程序启用/禁用WiFi?

时间:2011-04-15 08:44:50

标签: android wifi

我想从我的Android应用程序启用/禁用wifi。我怎么能这样做?

6 个答案:

答案 0 :(得分:47)

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 :(得分:14)

要在您的应用程序中启用/禁用WiFi,您需要使用WiFiManager类。创建一个WiFiManager类对象以获取WiFi服务。

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

要获取在Android中启用/禁用Wifi的完整示例代码,请访问this website

答案 2 :(得分:3)

试试这段代码

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

答案 3 :(得分:1)

试试这个

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

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

答案 4 :(得分:1)

要通过 Android Q(Android 10)中的应用启用/禁用wifi,请使用设置面板

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 :(得分:0)

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 && !wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(true);
        } else if (!status && wifiManager.isWifiEnabled()) {
            wifiManager.setWifiEnabled(false);
        }
    }
}

在清单文件中添加用户权限