一般获取ip方法是
public String getLocalIpAddress() {
try {
String ipv4;
List nilist = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface ni: nilist)
{
List ialist = Collections.list(ni.getInetAddresses());
for (InetAddress address: ialist){
if (!address.isLoopbackAddress() && InetAddressUtils.isIPv4Address(ipv4=address.getHostAddress()))
{
return ipv4;
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
可以理解为从内部获取;
目前仅知道用小米手机调试会出现ip错误的情况
可以通过下面两种方法获取
1:socket的 socket.getLocalAddress()
2:通过wifiManager
方法具体实现(192.168.3.1为进入路由器的地址)
// 1获取ip
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo info = wifiManager.getConnectionInfo();
ip =Formatter.formatIpAddress(info.getIpAddress());
return ip;
//2获取ip
// try{
// Socket socket = new Socket("192.168.3.1", 80);
// ip=socket.getLocalAddress().toString();
// return ip;
// } catch (Exception e) {
// e.printStackTrace();
// //throw new RuntimeException();
// }
// return null;