android WifiMange获取IP为负

通过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】

  @Overrideprotected 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 nullif (!iter.hasNext()) return null;// Concatenate all available addresses, newline separatedStringBuilder 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地址;


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部