我想通过代码获取当前运行的Android Emulator的IP地址.如何实现?
只是为了澄清:在您的应用程序中,您可以简单地将模拟器称为"localhost"或127.0.0.1.
Web流量通过您的开发计算机进行路由,因此模拟器的外部IP是您的提供商为该计算机分配的IP.始终可以通过10.0.2.2的设备访问开发机器.
既然你只询问模拟器的IP,那么你想要做什么呢?
如果您真的想要分配给模拟器的IP:
adb shell ifconfig eth0
哪个会给你这样的东西:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
像这样:
public String getLocalIpAddress() { try { for (Enumerationen = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) { NetworkInterface intf = en.nextElement(); for (Enumeration enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) { InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress()) { return inetAddress.getHostAddress().toString(); } } } } catch (SocketException ex) { Log.e(LOG_TAG, ex.toString()); } return null; }
查看文档以获取更多信息:NetworkInterface.
使用此方法您将获得100%正确的Android模拟器的IP地址
获取yoor模拟器的IP地址
转到adb shell并键入此命令
adb shell ifconfig eth0
运行此命令后,我得到了
IP:10.0.2.15
面具:255.255.255.0
哪个适合我.我也在为网络应用程序工作.
如果需要引用主机的localhost,例如当您希望模拟器客户端与运行在同一主机上的服务器联系时,请使用别名10.0.2.2来引用主机的环回接口.从模拟器的角度来看,localhost(127.0.0.1)指的是它自己的loopback接口.更多细节:http://developer.android.com/guide/faq/commontasks.html#localhostalias