android WifiMange获取IP为负
16lz
2021-01-23
通过WifiMange获得ip步骤如下:
WifiManager wifiManager = (WifiManager) getSystemService(Context.WIFI_SERVICE); WifiInfo wifiInfo = wifiManager.getConnectionInfo(); int ipAddress = wifiInfo.getIpAddress(); String ip = String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff), (ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));
目前还不清楚什么原因,某些设备获取wifiInfo.getIpAddress()返回值是个负数值;
所以查看android源码【AbstractIpAddressPreferenceController.java】
@Override protected void updateConnectivity() { String ipAddress = getDefaultIpAddresses(mCM); if (ipAddress != null) { mIpAddress.setSummary(ipAddress); } else { mIpAddress.setSummary(R.string.status_unavailable); } } /** * Returns the default link's IP addresses, if any, taking into account IPv4 and IPv6 style * addresses. * @param cm ConnectivityManager * @return the formatted and newline-separated IP addresses, or null if none. */ private static String getDefaultIpAddresses(ConnectivityManager cm) { LinkProperties prop = cm.getActiveLinkProperties(); return formatIpAddresses(prop); } private static String formatIpAddresses(LinkProperties prop) { if (prop == null) return null; Iterator iter = prop.getAllAddresses().iterator(); // If there are no entries, return null if (!iter.hasNext()) return null; // Concatenate all available addresses, newline separated StringBuilder addresses = new StringBuilder(); while (iter.hasNext()) { addresses.append(iter.next().getHostAddress()); if (iter.hasNext()) addresses.append("\n"); } return addresses.toString(); }
可以看到,系统源码是用ConnectivityManager 方法获取,从中提取后方法如下:
ConnectivityManager conMann =(ConnectivityManager)this.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobileNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); NetworkInfo wifiNetworkInfo = conMann.getNetworkInfo(ConnectivityManager.TYPE_WIFI);if (mobileNetworkInfo.isConnected()) { System.out.println("ip ==== " + getLocalIpAddress());}
经过测试,可以获得正确IP地址;
更多相关文章
- android aosp 源码版本
- Android Architecture Components(一)Lifecycle源码分析
- Android 计算器源码
- 最新android 应用源码下载
- Android之查看外部依赖jar的源码
- 【30篇突击 android】源码统计四
- android 的短息发声阅读软件源码
- Android 源码热门改动速查(持续更新.....)