Reputation: 11
I'm getting SSID and Password from user as an input. I want to create a function connectWifi(String SSID, String password)
that returns connection successful or invalid credentials. What is the best way to connect Wi-Fi using SSID and Password?
Upvotes: 1
Views: 4960
Reputation: 1407
You can use this function for android 10 and above
private fun connectToYourWifi(ssid: String, password:String) {
val wifiNetworkSpecifier = WifiNetworkSpecifier.Builder()
.setSsid(ssid)
.setWpa2Passphrase(password)
.build()
val networkRequest = NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.setNetworkSpecifier(wifiNetworkSpecifier)
.build()
val connectivityManager =
applicationContext!!.getSystemService(Context.CONNECTIVITY_SERVICE) as ConnectivityManager
connectivityManager.requestNetwork(networkRequest, ConnectivityManager.NetworkCallback())
}
This code open up default dialog to connect with your specific wifi that you want to connect.
Upvotes: 0
Reputation: 21
We can use following method to connect wifi with provided password
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";
}
}
Upvotes: 1
Reputation: 389
You can try the below code snippet to check for available wifi networks and get connected to a specified wifi network.
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();
}
}
And You must check the correct permission as well !!
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
Upvotes: 1