我面临的问题是2011年在这个问题跟踪器中报告的,并希望开发出一个合适的解决方法。我想向用户显示所有Android设备的网络接口,以及按其类型和是否当前处于活动状态进行分类。我的最低目标API为15。
据我所知,有两种方法可以获取网络接口信息:
通过内置的Java
NetworkInterface
类使用NetworkInterface.getNetworkInterfaces()
。这将返回包含接口名称、与接口关联的所有IP地址等信息的NetworkInterface
对象。对于我的设备(LG G3),我得到了像lo
、wlan0
和rmnet0
这样的接口。这也返回像IP地址、MTU、子网掩码和广播地址这样的信息,这正是我需要的。通过Android API
ConnectivityManager
服务使用aConnManager.getAllNetworkInfo()
。这为我的设备返回约20个NetworkInfo
对象,其中大多数未被使用,但它们包括类型MOBILE
、WIFI
、BLUETOOTH
等。这不包括任何网络参数,如上述IP地址、MTU等。
如跟踪器中所解释的那样,问题在于没有内置的方法将NetworkInfo
映射到NetworkInterface
或反之。我希望尽可能避免使用接口名称来映射到适当的NetworkInfo
。
由于我有一种直觉认为这是不可能的,是否有一个列出大多数厂商潜在网络接口名称的列表?对于具有高通基带处理器的设备,rmnet[0-9]
似乎是常见的,对于WiFi,则是wlan[0-9]
等。
最差的情况下,如果接口名称不符合任何常见模板,我想我可以将接口类型列为未知。提前致谢。