How to Connect to Wi-Fi in android app (API 29 or later) programmatically such that it should work other than the app

66 Views Asked by At

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);
0

There are 0 best solutions below