我正在尝试查找我的Android设备的IP地址(IPV4)。
如果我执行以下代码:
InetAddress inet = InetAddress.getLocalHost();
System.out.println(inet.getHostAddress()); //giving me 127.0.0.1
我的代码给我返回了127.0.0.1的IP地址。
我想要得到实际的198.168.xx.xx的IP地址。
(但是在我的电脑上,相同的代码却能够给我返回实际的IP地址。)
我正在尝试查找我的Android设备的IP地址(IPV4)。
如果我执行以下代码:
InetAddress inet = InetAddress.getLocalHost();
System.out.println(inet.getHostAddress()); //giving me 127.0.0.1
我的代码给我返回了127.0.0.1的IP地址。
我想要得到实际的198.168.xx.xx的IP地址。
(但是在我的电脑上,相同的代码却能够给我返回实际的IP地址。)
public static String getIpAddress() {
try {
for (Enumeration en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()&&inetAddress instanceof Inet4Address) {
String ipAddress=inetAddress.getHostAddress().toString();
Log.e("IP address",""+ipAddress);
return ipAddress;
}
}
}
} catch (SocketException ex) {
Log.e("Socket exception in GetIP Address of Utilities", ex.toString());
}
return null;
}
给予权限
还需在清单文件中添加。
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
return String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));
这将以“X.X.X.X”的形式字符串返回它
您在manifest.xml
中唯一需要的权限是
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />