首页 文章

Android:如何以编程方式启用/禁用Wifi或Internet连接

提问于
浏览
71

使用Connectivity Manager类,我们可以访问wifi或Internet网络:

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

其中 01 分别指移动和wifi连接

如果我的Android设备连接到两者,我们可以在任何网络之间切换还是我们可以禁用任何网络?喜欢使用功能:

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

6 回答

  • 27

    我知道启用或禁用wifi:

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

    根据要求,状态可以是 truefalse .

    Edit:

    您还需要清单文件中的以下权限:

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

  • 4

    To Enable WiFi:

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

    To Disable WiFi:

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

    Note: To access with WiFi state, we have to add following permissions inside the AndroidManifest.xml file:

    android.permission.ACCESS_WIFI_STATE
    android.permission.UPDATE_DEVICE_STATS 
    android.permission.CHANGE_WIFI_STATE
    
  • 1

    完整的解决方案:

    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

    要启用禁用Wifi,请使用 WifiManager 类为Wifi获取系统(Android设备)服务:

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

    现在 WifiManager 类的对象 wifi 用于获取wifi状态:

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

    最重要的是,不要忘记在Android Manifest文件中提供以下权限:

    <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,请访问my website link .

  • 157

    在清单中添加此权限,然后使用上面的代码更改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"/>
    
  • 12

    我无法直接访问上下文对象 .
    我的解决方案如下:

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

    我也不得不改变一些着作,例如 . WIFI_SERVICE与WifiService .

相关问题