Android 如何从设备中查找动态 IP? [复制]
Posted
技术标签:
【中文标题】Android 如何从设备中查找动态 IP? [复制]【英文标题】:Android How to find Dynamic IP from device? [duplicate] 【发布时间】:2011-03-22 02:00:46 【问题描述】:我有办法找到 DHCP 地址和主机地址。 如何找到分配给我的设备的动态 IP 地址。 我可以从http://www.ip2location.com/default.aspx得到地址
如何在设备中获取此 IP?
【问题讨论】:
【参考方案1】:ipString = String.format(
"%d.%d.%d.%d",
(ip & 0xff),
(ip >> 8 & 0xff),
(ip >> 16 & 0xff),
(ip >> 24 & 0xff));
【讨论】:
这是什么?没有说明【参考方案2】:您可以使用外部服务器来请求您的 IP,就像 @Midday 建议的那样。这可能是最简单的解决方案。问题是您将不得不依赖网络和远程服务器,这可能并不总是可靠的。
您也可以直接从您的设备上获取它,但您必须跳过一些环节才能做到这一点 - 获取您设备的 IP 地址并不像在 android 上那么简单。
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
注意ipAddress
是一个整数。
例如,如果您的 IP 地址是“86.52.119.245”:
getIpAddress
返回的 int 将为 4118230102。
翻译成二进制这个数字是:11110101 01110111 00110100 01010110。
将每个字节转换为十进制,然后得到数字:80 35 83 10
请注意,数字是按网络顺序排列的,因此您必须翻转它。
希望对你有帮助。
【讨论】:
你能帮忙如何翻转它以获得原始ip吗? 查看上面的答案,同时应用它们,您将获得熟悉的 IP。【参考方案3】:如果您希望外部 IP this website 可以帮助您,他们也有一个 XML API 希望这会有所帮助。如果您需要本地 IP(如果在 WIFI 上),Android api 中应该有一些内容
【讨论】:
【参考方案4】:这帮助我获得了 IPv4 IP。我从另一篇文章中得到它,但一些搜索结果显示了这个。
public static String getMyIp()
try
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();)
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();)
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress())
if(InetAddressUtils.isIPv4Address(inetAddress.getHostAddress()))
return inetAddress.getHostAddress().toString();
catch (SocketException ex)
Log.e("NetworkSettings", "There was a socket error: " + ex.toString());
return null;
取自 "How to get my ip address?" post 并添加了对 IPv4 的检查(它为我返回了 IPv6)
【讨论】:
以上是关于Android 如何从设备中查找动态 IP? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
jQuery Mobile 无法在 Android 设备上动态更改图像
从Android应用程序获取设备的MAC地址和IP地址[重复]