对于Android设备,可以通过以下代码获取当前网络的IP地址:
- 使用
ConnectivityManager
类获取网络连接信息:
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
- 检查网络连接是否可用:
if (networkInfo != null && networkInfo.isConnected()) {
// 网络连接可用
} else {
// 网络连接不可用
}
- 如果网络连接可用,获取当前网络的IP地址:
if (networkInfo.getType() == ConnectivityManager.TYPE_WIFI) {
// 当前连接为Wi-Fi网络,可以使用WifiManager获取IP地址
WifiManager wifiManager = (WifiManager) getApplicationContext().getSystemService(Context.WIFI_SERVICE);
int ipInt = wifiManager.getConnectionInfo().getIpAddress();
String ip = Formatter.formatIpAddress(ipInt);
} else if (networkInfo.getType() == ConnectivityManager.TYPE_MOBILE) {
// 当前连接为移动网络,可以使用TelephonyManager获取IP地址
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String ip = telephonyManager.getIpAddress();
}
注意:上述代码需要在AndroidManifest.xml文件中添加相应的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
以上代码可以获取到当前设备所连接的网络的IP地址。但请注意,这是设备所处局域网的IP地址,并不是设备在互联网上的真实IP地址。如果需要获取设备在互联网上的真实公网IP地址,可能需要使用一些额外的网络服务或API来获取。
在Android上获取当前网络的IP地址,可以使用如下代码:
public String getIPAddress() {
try {
// 获取所有网络接口
List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
for (NetworkInterface intf : interfaces) {
// 获取当前网络接口的所有IP地址
List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
for (InetAddress addr : addrs) {
// 过滤IPv4地址和非回环地址
if (!addr.isLoopbackAddress() && addr instanceof Inet4Address) {
return addr.getHostAddress();
}
}
}
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
需要注意的是,此方法返回的是设备当前连接的有效IP地址,即非回环地址和IPv4地址。由于IP地址可能会因为网络切换而变化,所以获取到的IP地址并不是一个固定的值。
发布者:luotuoemo,转转请注明出处:https://www.jintuiyun.com/142624.html