我在2011年遇到了这个跟踪器问题中报告的问题,并希望开发一个适当的解决方法。 我想将所有Android设备的networking接口显示给用户,并按照他们的types以及他们是否当前处于活动状态进行分类。 我的目标是至less达到API 15。
据我所知,有两种获取networking接口信息的方法:
跟踪器中解释的问题是没有内置的方法将NetworkInfo
映射到NetworkInfo
,反之亦然,我想避免使用接口名称映射到适当的NetworkInfo
如果可能的话)。
由于我有一种预感,这是不可能的,是否有列表中的大多数供应商的所有潜在的networking接口名称? 对于使用高通基带处理器的设备, rmnet[0-9]
似乎很常见,WiFi等的wlan[0-9]
等等。
在最坏的情况下,我想我可以列出接口types为未知,如果接口名称不匹配任何常见的模板。 提前致谢。
从API 21开始,可以使用LinkProperties
从Network
network
对象中获取NetworkInterface
对象:
ConnectivityManager manager = getSystemService(ConnectivityManager.class); LinkProperties prop = manager.getLinkProperties(network); NetworkInterface iface = NetworkInterface.getByName(prop.getInterfaceName());
然而,尽pipegetAllNetworks()
应该取代getAllNetworkInfo()
(前者在API 21中引入,后者在API 23中被弃用),但是从Android 6.0.1开始,它并没有。 getAllNetworks()
不会列出所有networking(参见SO Q#33374766 )。 看起来像一个错误。
或者,为了通知用户所有networking连接的状态,可以使用registerNetworkCallback针对NetworkCapabilities ( 即, TRANSPORT_CELLULAR
, TRANSPORT_WIFI
, TRANSPORT_ETHERNET
, TRANSPORT_BLUETOOTH
& TRANSPORT_VPN
)中可用的每个传输types注册一组callback。
以上就是android开发分享NetworkInfo和NetworkInterface之间的解决方法映射相关内容,想了解更多android开发(异常处理)及android游戏开发关注计算机技术网(www.ctvol.com)!)。
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/addevelopment/513658.html