【发布时间】:2015-07-11 15:11:56
【问题描述】:
我遇到了一个早在 2011 年就在 this tracker issue 中报告的问题,我想开发一个合适的解决方法。我想向用户显示所有 Android 设备的网络接口,并按它们的类型以及它们当前是否处于活动状态对它们进行分类。我的目标至少是 API 15。
据我所知,获取网络接口信息的方法有两种:
通过使用
NetworkInterface.getNetworkInterfaces()的内置JavaNetworkInterface类。这将返回NetworkInterface对象,其中包含接口名称、与接口关联的所有 IP 地址等信息。对于我的设备 (LG G3),我得到像lo、wlan0和rmnet0这样的接口。这还会返回我需要的 IP 地址、MTU、子网掩码和广播地址等信息。通过 Android API
ConnectivityManager服务使用aConnManager.getAllNetworkInfo()。这将为我的设备返回大约 20 个NetworkInfo对象,其中大多数未使用,但它们包括MOBILE、WIFI、BLUETOOTH等类型。这不包括任何网络参数,如 IP 地址、MTU 等。如上所述。
跟踪器中解释的问题是没有内置方法将 NetworkInfo 映射到 NetworkInterface 或反之亦然,我想避免使用接口名称映射到适当的 @ 987654336@ 如果可能的话。
由于我有一种不可能的预感,是否有一个列表列出了大多数供应商的所有潜在网络接口名称? rmnet[0-9] 似乎对于配备高通基带处理器的设备很常见,wlan[0-9] 对于 WiFi 等似乎很常见。
在最坏的情况下,如果接口名称与任何常见模板不匹配,我想我可以将接口类型列为未知。提前致谢。
【问题讨论】:
标签: android android-networking