Android-如何使用SSID和密码连接Wi-Fi

问题描述 投票:0回答:2

我从用户处获取SSID和密码作为输入。我想创建一个函数connectWifi(String SSID, String password),该函数返回连接成功无效的凭据。使用SSID和密码连接Wi-Fi的最佳方法是什么?

java android android-studio wifi android-wifi
2个回答
0
投票

您可以尝试下面的代码片段来检查可用的wifi网络并连接到指定的wifi网络。

List<ScanResult> wifiScanList = wifi.getScanResults();
         wifis = new String[wifiScanList.size()];

         for(int i = 0; i < wifiScanList.size(); i++){
            wifis[i] = ((wifiScanList.get(i)).SSID);                

            if(wifis[i].equals("WiredSSID")) {

                 WifiConfiguration wifiConfig = new WifiConfiguration();
                 wifiConfig.SSID = String.format("\"%s\"", wifis[i]);
                 wifiConfig.preSharedKey = String.format("\"%s\"", "password");

                 WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
                 //remember id
                 int netId = wifiManager.addNetwork(wifiConfig);
                 wifiManager.disconnect();
                 wifiManager.enableNetwork(netId, true);
                 wifiManager.reconnect();
             }
         }

而且您还必须检查正确的权限!!

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

0
投票

我们可以使用以下方法使用提供的密码连接wifi

void connectWifi(String ssid, String password){
WifiConfiguration wifiConfig = new WifiConfiguration();
wifiConfig.SSID = String.format("\"%s\"", ssid);
wifiConfig.preSharedKey = String.format("\"%s\"", password);
WifiManager wifiManager = (WifiManager)getSystemService(WIFI_SERVICE);
//remember id
int netId = wifiManager.addNetwork(wifiConfig);
wifiManager.disconnect();
wifiManager.enableNetwork(netId, true);
wifiManager.reconnect();
}

在此方法调用之后,我们可以检查特定的SSID是否已连接

String checkIfWifiConnected(String ssid){
WifiManager wifiManager = (WifiManager) getSystemService (Context.WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo ();
String connectedSsid  = info.getSSID();

if(connectedSsid.equals()){
return "connected";
}else{
return "not connected";
}
}
© www.soinside.com 2019 - 2024. All rights reserved.