首页 > 解决方案 > 以编程方式连接到特定的 wifi

问题描述

我想在android中以编程方式连接到特定的wifi。我提到了很多链接。但还没有达到目的。我正在按照以下代码连接特定的 wifi。

 WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
  WifiConfiguration configuration = new WifiConfiguration();
                                    configuration.SSID = String.format("\"%s\"", "ssid");
                                    configuration.preSharedKey = String.format("\"%s\"", "paasword");
                                    configuration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
                                    int netId = wifiManager.addNetwork(configuration);
                                    wifiManager.disconnect();
                                    wifiManager.enableNetwork(netId,true);
                                    wifiManager.reconnect();

当我尝试运行此代码时.. wifi 连接将断开并再次自动连接以前的 wifi 网络。我正在使用 redmi 6a mobile(版本 9)进行测试。任何人都可以指导我如何解决这个问题。

提前致谢。

标签: androidandroid-wifi

解决方案


我相信您需要遍历所有可用的网络,然后连接到正确的网络(如果可用)。

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

         break;
    }else{Log.e("TAG","Network Not Available")}           
}

推荐阅读