android - 如何在 Android 中获取可用网络(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();
}
});
}
推荐阅读
- hyperledger-fabric - 当 stateDB 之一被篡改时检查 Hyperledger Fabric 的行为
- python - 计算 Python pandas 中两个特定行之间的百分比差异
- next.js - Nextjs SWR 为什么数据没有呈现在屏幕上
- python - 如何通过匿名连接向 ldap 服务器添加详细信息?
- python - 从 Statmodel OLS 回归摘要中提取 R 平方
- python - 在 bitbucket 中找不到 terraform
- gitlab - 错误保存状态:上传失败状态:POST
- javascript - JS ES6/ES10 - 有条件地通过另一个对象数组更改对象数组中的属性
- python - 如果我们在 django 频道中收到新消息,如何删除以前的消息
- c++ - 在 C++ 中返回二维数组