获取活动网络的接口名称 (API 21)

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)

任何建议表示赞赏。