我想以编程方式查找通过WiFi连接到Android设备或模拟器的计算机的IP地址。我该怎么做?
答案 0 :(得分:2)
你可以共享logcat,我怀疑可能还有其他问题。在示例应用程序中尝试使用此代码(按原样),仅检查Wi-Fi IP地址是否正常工作
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress();
String ip = null;
ip = String.format("%d.%d.%d.%d",
(ipAddress & 0xff),
(ipAddress >> 8 & 0xff),
(ipAddress >> 16 & 0xff),
(ipAddress >> 24 & 0xff))
答案 1 :(得分:1)
如另一主题所述,android Emulator可在虚拟专用网络上运行。
这意味着模拟器与您的计算机不在同一网络上,而是在虚拟模拟器上。没有模拟器可以看到其他设备,也没有其他模拟器,也没有其他设备可以看到模拟器。
除此之外,我有一个问题:
如何使用WifiManager获取主机名的IP地址?
例如,我的电脑与我的Android手机(不是模拟器)在同一个局域网上,它有一个像User-PC这样的主机名。当我尝试使用InetAddress.getByName(“User-PC”)获取IP时;在java应用程序上,我得到的局域网IP如192.168.1.100,但是当我在手机上尝试它时它不起作用。奇怪的是我可以建立连接,如果我知道IP,但似乎无法解决它主机名。
有什么想法吗?
答案 2 :(得分:1)
如果要检测连接到任何网络的“仿真器”或Android设备的IP地址,请在您的程序中使用此代码。它将为您提供网络为您的设备分配的确切IP地址。
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())
{
String Ip= inetAddress.getHostAddress().toString();
//Now use this Ip Address...
}
}
}
}
catch (SocketException obj)
{
Log.e("Error occurred during IP fetching: ", obj.toString());
}
答案 3 :(得分:0)