我面临的问题是2011年在this tracker issue中报告并希望开发适当的解决方法。我想将所有Android设备的网络接口显示给用户,并按照其类型以及它们是否当前处于活动状态进行分类。我的目标是至少达到API 15。NetworkInfo和NetworkInterface之间的解决方法映射
据我所知,有两种方式获取网络接口信息:
通过使用
NetworkInterface.getNetworkInterfaces()
内置的Java类NetworkInterface
。这将返回NetworkInterface
对象,其中包含接口名称,与接口关联的所有IP地址等信息。对于我的设备(LG G3),我获得如lo
,wlan0
和rmnet0
的接口。这也会返回我需要的信息,如IP地址,MTU,子网掩码和广播地址。通过Android API
ConnectivityManager
服务使用aConnManager.getAllNetworkInfo()
。这为我的设备返回大约20个对象,大部分都未使用,但它们包括类型MOBILE
,WIFI
,BLUETOOTH
等。这不包括如上所述的任何网络参数,如IP地址,MTU等。
在跟踪器解释的问题是,有没有内置的方式映射NetworkInfo
到NetworkInterface
或反之亦然,我想避免使用接口名称映射到相应的NetworkInfo
如果可能的话。
由于我有一种预感不可能,对于大多数供应商来说,有没有一个列出所有潜在网络接口名称的列表? rmnet[0-9]
似乎与高通的基带处理器的设备普遍,wlan[0-9]
支持WiFi等
在最坏的情况下,我想我可以列出接口类型为未知,如果接口名称不匹配任何公共模板。提前致谢。