在 Android 中获取 IP 地址有几种常见的方式:
1. 使用 `WifiManager` 类:
```java
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ipString = ((ipAddress & 0xFF) + "." +
(ipAddress >> 8 & 0xFF) + "." +
(ipAddress >> 16 & 0xFF) + "." +
(ipAddress >> 24 & 0xFF));
```
2. 使用 `ConnectivityManager` 类:
```java
ConnectivityManager connMgr = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isConnected()) {
InetAddress inetAddress = networkInfo.getDetailedState().getInetAddress();
String ipString = inetAddress.getHostAddress();
}
```
3. 使用 `InetAddress` 类:
```java
try {
for (Enumeration
NetworkInterface intf = en.nextElement();
for (Enumeration
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
String ipString = inetAddress.getHostAddress();
}
}
}
} catch (SocketException ex) {
ex.printStackTrace();
}
```
需要注意的是,Android 8.0 (API 26) 以上版本需要申请 `android.permission.ACCESS_NETWORK_STATE` 权限才能使用 `ConnectivityManager` 和 `InetAddress` 类获取 IP 地址。