1

I use this method to connect to wifi, How to remove this network after connected?

I use this way to remove it , that seem to not support Android Q version

WifiManager.removeNetwork(wifiConfig.networkId);

Is there any other way?


      final NetworkRequest networkRequest = new NetworkRequest.Builder()
                        .addTransportType(NetworkCapabilities.TRANSPORT_WIFI)
                        .removeCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET)
                        .setNetworkSpecifier(builder.build())
                        .build();

      final ConnectivityManager connectivityManager = (ConnectivityManager) 
            context.getSystemService(Context.CONNECTIVITY_SERVICE);

      networkCallback =  new ConnectivityManager.NetworkCallback() {

                    @Override
                    public void onAvailable(@NonNull Network network) {
                        super.onAvailable(network);
                        connectivityManager.bindProcessToNetwork(network);
                        System.out.println(" onAvailable ");
                    }
      }

     connectivityManager.requestNetwork(networkRequest, networkCallback);

mrliu
  • 11
  • 1
  • Does this answer your question? https://stackoverflow.com/questions/59608457/turn-off-wifi-in-android-q https://stackoverflow.com/questions/64912011/disconnect-wifi-programmatically-on-android-10 https://stackoverflow.com/questions/58662032/android-q-connect-wifi-without-approval https://stackoverflow.com/questions/63884367/android-api-to-connect-to-wifi-network/63884943#63884943 – kelvin May 29 '21 at 03:06

1 Answers1

1

This is working:

 public async Task DisconnectFromWifi()
    {
        if (_version.Major > 9)
        {
            _connectivityManager.UnregisterNetworkCallback(_callback);
            await Task.Delay(10000);
            var network = _connectivityManager.ActiveNetwork;
            _connectivityManager.BindProcessToNetwork(network);
        }
        else
        {
            if(_temp == -1)
            {
                var temp = _wifiManager.ConfiguredNetworks;
                _temp = temp.Last().NetworkId;
            }
            
            _wifiManager.RemoveNetwork(_temp);
            _wifiManager.Reconnect();
            await Task.Delay(10000);
        }
    }