Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 以编程方式连接到wifi网络(首次访问ssid)?_Java_Android_Android Studio_Networking_Wifimanager - Fatal编程技术网

Java 以编程方式连接到wifi网络(首次访问ssid)?

Java 以编程方式连接到wifi网络(首次访问ssid)?,java,android,android-studio,networking,wifimanager,Java,Android,Android Studio,Networking,Wifimanager,我想连接第一次使用的wifi网络(以前未保存)。如果我以前连接过wifi,下面的代码运行良好,我可以访问wifi,但是如果我第一次尝试连接,什么都不会发生。为什么会这样 String networkSSID = "myssid"; String networkPass = "mypass"; WifiConfiguration conf = new WifiConfiguration(); conf.SSID = "\"" + networkSSID + "\""; conf.preShared

我想连接第一次使用的wifi网络(以前未保存)。如果我以前连接过wifi,下面的代码运行良好,我可以访问wifi,但是如果我第一次尝试连接,什么都不会发生。为什么会这样

String networkSSID = "myssid";
String networkPass = "mypass";
WifiConfiguration conf = new WifiConfiguration();
conf.SSID = "\"" + networkSSID + "\"";
conf.preSharedKey = "\""+ networkPass +"\"";

WifiManager wifiManager = (WifiManager)MainActivity.this.getSystemService(Context.WIFI_SERVICE);
wifiManager.addNetwork(conf);

List<WifiConfiguration> list = wifiManager.getConfiguredNetworks();
for( WifiConfiguration i : list ) {
    if(i.SSID != null && i.SSID.equals("\"" + networkSSID + "\"")) {
        wifiManager.disconnect();
        wifiManager.enableNetwork(i.networkId, true);
        wifiManager.reconnect();

        break;
    }
}
String networkSSID=“myssid”;
字符串networkPass=“mypass”;
WifiConfiguration conf=新的WifiConfiguration();
conf.SSID=“\”+网络SSID+“\”;
conf.preSharedKey=“\”+网络通行证+“\”;
WifiManager=(WifiManager)MainActivity.this.getSystemService(Context.WIFI\u服务);
wifiManager.addNetwork(conf);
List List=wifiManager.getConfiguredNetworks();
用于(无线配置i:列表){
如果(i.SSID!=null&&i.SSID.equals(“\”+networkSSID+“\”)){
wifiManager.disconnect();
wifiManager.enableNetwork(即networkId,true);
wifiManager.reconnect();
打破
}
}

有点晚了,但它可能会帮助其他人。 你有点做错了。 您正在添加一个网络(以前未配置的网络),然后尝试连接到一个已配置的网络(不同的网络),两者都具有相同的SSID。 相反,请尝试以下方法:

netId = wifiManager.addNetwork(conf);
if (netId == -1) {
    netId = //your procedure of getting the netId from wifiManager.getConfiguredNetworks()
}
wifiManager.enableNetwork(netId, true);
在Kotlin中,它看起来像这样:

var netId = wifiManager.addNetwork(conf)
if (netId == -1) netId = getExistingNetworkId(ssid)
if (!wifiManager.enableNetwork(netId, true)) {
//Handle failure
}

...
private fun getExistingNetworkId(ssid: String): Int {
    wifiManager.configuredNetworks?.let {
        return it.firstOrNull { it.SSID.trim('"') == ssid.trim('"') }?.networkId ?: -1
    }
    //Unable to find proper NetworkId to connect to
    return -1
}
这应该足够了。您不需要断开/重新连接部件