Android 无法使用wifiManger连接WIFI

Android 无法使用wifiManger连接WIFI,android,android-wifi,android-wireless,Android,Android Wifi,Android Wireless,我正在尝试连接特定的wifi,但它不工作。每当我呼叫以下代码时,已连接的wifi停止,手机在扫描模式下显示wifi。有人能告诉我为什么会这样吗。这是我的密码: String result = ""; try { WifiConfiguration wifiConfig = new WifiConfiguration(); wifiConfig.SSID = String.format("\"%s\"", ssid); WifiManage

我正在尝试连接特定的wifi,但它不工作。每当我呼叫以下代码时,已连接的wifi停止,手机在扫描模式下显示wifi。有人能告诉我为什么会这样吗。这是我的密码:

 String result = "";
    try {
        WifiConfiguration wifiConfig = new WifiConfiguration();
        wifiConfig.SSID = String.format("\"%s\"", ssid);
        WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);

        int netId = wifiManager.addNetwork(wifiConfig);
        wifiManager.disconnect();
        wifiManager.enableNetwork(netId, true);
        wifiManager.reconnect();
        int state = wifiManager.getWifiState();
        Log.i(TAG, "state: " + state);
        WifiInfo wifiInfo = wifiManager.getConnectionInfo();
        String newSSID = wifiInfo.getSSID();
        result = "Connected";
    } catch (Exception e) {
        result = "Failed";
        Log.e(TAG, "unable to set wifi " + ssid, e);
    }

我认为您不应该再添加SSID。此代码
wifiManager.addNetwork(wifiConfig)
正在向您的设备添加另一个wifi配置文件

您只需要以下代码即可重新连接

private boolean connectToWifi(String ssid) {
    WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
    List<WifiConfiguration> wifiList = wifiManager.getConfiguredNetworks();
    for( WifiConfiguration config : wifiList ) {
        if(config.SSID != null && config.SSID.equals("\"" + ssid + "\"")) {
             wifiManager.disconnect();
             wifiManager.enableNetwork(config.networkId, true);
             wifiManager.reconnect();               
             return true;
        }           
    }
    return false;
}
private boolean connectToWifi(字符串ssid){
WifiManager=(WifiManager)context.getSystemService(context.WIFI\u SERVICE);
List wifiList=wifiManager.getConfiguredNetworks();
用于(WifiConfiguration config:wifiList){
如果(config.SSID!=null&&config.SSID.equals(“\”+SSID+“\”)){
wifiManager.disconnect();
wifiManager.enableNetwork(config.networkId,true);
wifiManager.reconnect();
返回true;
}           
}
返回false;
}

这是一个开放的网络吗??如果没有,则还需要设置其他配置。此配置未打开,但已保存在移动网络中。所以我不这么认为,我需要提供密钥和配置来连接它。好的,你是对的。但我仍然无法连接。关闭wifi,然后返回以前连接的网络。这似乎是android在保存网络列表中优先选择默认网络。是否可以从默认设置中删除此metwork,然后在默认设置中添加新的metwork?@user526206首先从设备中删除所有wifi配置文件,然后重新配置。谢谢。正确的方法是禁用连接的网络,如:wifiManager.disconnect();wifiManager.enableNetwork(config.networkId,true);wifiManager.disableNetwork(已连接网络);wifiManager.reconnect();