0

I try get a list of available networks, but when WiFi is on I see only "WIFI," although GSM/LTE is enabled. Is there a good way to get the list available networks?

I'm trying to do so:

ConnectivityManager connManager = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
String strNetworkName = "";
if(null != connManager) {
    Network networks[] = connManager.getAllNetworks();
    if(networks != null) {
         NetworkInfo nwInfo = null;
         for(Network nw: networks) {
             nwInfo = connManager.getNetworkInfo(nw);
             strNetworkName += nwInfo.getTypeName() + ", ";
        }
    }
}
Toast.makeText(getApplicationContext(), strNetworkName, Toast.LENGTH_SHORT).show();
SergeyYu
  • 354
  • 1
  • 5
  • 20

1 Answers1

0

I developed function that return Map of connection's names and networks. I think it can be interesting.

Map<String,Network> getAvailableNetwoks(Context context) {
    ConnectivityManager connManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

    HashMap<String,Network> setNetworkName = new HashMap<String,Network>();
    if (null != connManager) {

        // Set MOBILE network for checking is it existing
        activateMobileNetwork(context, connManager);

        Network networks[] = connManager.getAllNetworks();
        if (networks != null) {
            NetworkInfo nwInfo;
            for (Network nw : networks) {
                nwInfo = connManager.getNetworkInfo(nw);
                setNetworkName.put(nwInfo.getTypeName(), nw);
            }
        }
    }

    return setNetworkName;
}

void activateMobileNetwork(Context context, ConnectivityManager connManager) {
    NetworkRequest.Builder builder = new NetworkRequest.Builder();
    builder.addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET);
    builder.addTransportType(NetworkCapabilities.TRANSPORT_CELLULAR);

    NetworkRequest networkRequest = builder.build();
    connManager.requestNetwork(networkRequest, new ConnectivityManager.NetworkCallback() {
        @Override
        public void onAvailable(Network network) {
            super.onAvailable(network);
            Toast.makeText(context, "MOBILE connect", Toast.LENGTH_SHORT).show();
        }
    });
}
SergeyYu
  • 354
  • 1
  • 5
  • 20