我从用户那里获得了SSID和密码作为输入。我想创建一个函数connectWifi(String SSID, String password)
,该函数返回连接成功或无效的凭据。使用SSID和密码连接Wi-Fi的最佳方法是什么?
答案 0 :(得分:1)
您可以尝试使用以下代码段检查可用的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"/>
答案 1 :(得分:0)
我们可以使用以下方法使用提供的密码连接wifi
String 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);
boolean isConnectionSuccessful = wifiManager.reconnect();
if(isConnectionSuccessful){
return "connection successful";
}else{
return "invalid credential";
}
}