如何以编程方式查找设备的公共 IP 地址? [复制]
Posted
技术标签:
【中文标题】如何以编程方式查找设备的公共 IP 地址? [复制]【英文标题】:How to programmatically find the public IP address of a Device? [duplicate] 【发布时间】:2018-11-06 15:53:22 【问题描述】:我们可以通过 WifiManager 或 InetAddress 获取本地 IP 地址。但我们需要在 android 中以编程方式获取当前公共 IP 地址。
【问题讨论】:
你需要公共网站看到的IP地址吗? (例如,如果您在 NAT 路由器后面,您不需要设备的 IP,而是需要路由器的公共 IP)。在这种情况下,我只需要一个外部 Web 服务,例如 whatismyip.com 【参考方案1】:在清单文件中添加权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
创建移动数据和Wifi状态的方法。
public String GetDeviceipMobileData()
try
for (java.util.Enumeration<java.net.NetworkInterface> en = java.net.NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
java.net.NetworkInterface networkinterface = en.nextElement();
for (java.util.Enumeration<java.net.InetAddress> enumIpAddr = networkinterface.getInetAddresses(); enumIpAddr.hasMoreElements();)
java.net.InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress())
return inetAddress.getHostAddress().toString();
catch (Exception ex)
Log.e("Current IP", ex.toString());
return null;
public String GetDeviceipWiFiData()
android.net.wifi.WifiManager wm = (android.net.wifi.WifiManager) getSystemService(WIFI_SERVICE);
@SuppressWarnings("deprecation")
String ip = android.text.format.Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
return ip;
检查网络状态并调用此方法。
【讨论】:
你刚才提供的代码只给出了IPV4 IP地址 IE: 192.168.0.100 192.168.0.101 主发布者需要公共IP地址 是的,这是私有 IP以上是关于如何以编程方式查找设备的公共 IP 地址? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
如何以编程方式获取android手机的IP地址......? [复制]
Android 设备如何以编程方式推断它所连接的 Linux 设备的 IP 地址?