I have used WifiNetworkSpecifier Builder to connect to Wi-Fi and connected to the given SSID but, it only works within the application, How can I connect to the given SSID of Wi-Fi and works other than the connected app,
My code is below which connects to the SSID but, internet only works within the app.
WifiNetworkSpecifier specifier = new WifiNetworkSpecifier.Builder()
.setSsid("ssid")
.setWpa2Passphrase("password")
.build();
NetworkRequest request = new NetworkRequest.Builder()
.addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
.removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
.setNetworkSpecifier(specifier)
.build();
ConnectivityManager connectivityManager = (ConnectivityManager) context.getApplicationContext().getSystemService(Context.CONNECTIVITY_SERVICE);
ConnectivityManager.NetworkCallback networkCallback = new ConnectivityManager.NetworkCallback() {
public void onAvailable(Network network) {
connectivityManager.bindProcessToNetwork(network);
Log.e(TAG,"Connected to password-protected Wi-Fi network");
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
cm.bindProcessToNetwork(network);
NetworkCapabilities capabilities = cm.getNetworkCapabilities(network);
if (capabilities != null) {
if (capabilities.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
currentConnectedSSID = wifiInfo.getSSID();
}
}
}
@Override
public void onUnavailable() {
// do failure processing here..
Log.e(TAG,"Failed to connect to password-protected Wi-Fi network");
}
};
connectivityManager.requestNetwork(request, networkCallback);