如何获取安卓系统中可用网络(GSM/LTE、WiFi等)的列表



我试图获得可用网络的列表,但当WiFi打开时,我只看到"WiFi",尽管GSM/LTE已启用。有没有一个好方法可以获得可用网络列表?

我正在努力做到这一点:

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

我开发了返回连接名称和网络映射的函数。我觉得它可能很有趣。

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();
}
});
}

最新更新