Multi Networking in Lollipop

android, android-5.0-lollipop, cellular-network, networking, wifi

Solution

I solved this problem myself.

ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);    
Network[] networks = connectivityManager.getAllNetworks();
NetworkInfo networkInfo;
Network network;
    for (int i = 0; i < networks.length; i++){               
        network = networks[i];
        networkInfo = connectivityManager.getNetworkInfo(network);
        if ((networkInfo.getType() ==     ConnectivityManager.TYPE_WIFI) && (networkInfo.getState().equals(NetworkInfo.State.CONNECTED))) {
           ConnectivityManager.setProcessDefaultNetwork(network);
            break;
        }
    }

Problem

I am working on an app that saves your credentials and logs in to the university wifi automatically when connected to a particular ssid. Everything is working fine. But when mobile data is on and wifi gets connected, the login request is sent through the mobile data (since the wifi connection is not active). I read on the documentation and tried this. ``` if(Build.VERSION.SDK_INT >= 21){ ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkRequest.Builder requestBuilder = new NetworkRequest.Builder(); requestBuilder.addTransportType(NetworkCapabilities.TRANSPORT_WIFI); connectivityManager.registerNetworkCallback(requestBuilder.build(), new ConnectivityManager.NetworkCallback() { @Override public void onAvailable(Network network) { ConnectivityManager.setProcessDefaultNetwork(network); } }); } new LoginTask().execute(); ``` This doesn't solve my problem. Any suggestions?

Original source