Tho*_*ord 5 android android-networking
我需要wlan0在 API 21 中获取活动网络的接口名称(例如)。
在 API 23 中,我可以:
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
Network activeNetwork = connectivityManager.getActiveNetwork();
if (activeNetwork != null)
{
LinkProperties linkProperties = connectivityManager.getLinkProperties(activeNetwork);
String name = linkProperties.getInterfaceName();
...
}
Run Code Online (Sandbox Code Playgroud)
但是ConnectivityManager.getActiveNetwork(),仅适用于 API 23 及更高版本。
是否有可接受的与 API 21 兼容的解决方案?
我想出了以下遍历所有网络并进行比较的方法NetworkInfo.toString()(因为按引用或值进行比较不起作用)。它似乎有效,但也感觉像是一个巨大的黑客:
ConnectivityManager connectivityManager = (ConnectivityManager) getSystemService(CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
if (activeNetworkInfo != null)
{
Network[] networks = connectivityManager.getAllNetworks();
for (Network network : networks)
{
NetworkInfo networkInfo = connectivityManager.getNetworkInfo(network);
if (networkInfo.toString().equals(activeNetworkInfo.toString()))
{
LinkProperties linkProperties = connectivityManager.getLinkProperties(network);
String name = linkProperties.getInterfaceName();
...
break;
}
}
}
Run Code Online (Sandbox Code Playgroud)
任何建议表示赞赏。
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |