如何在 android 中自动提供设备的 IP
How to feed the IP of the device automatically in android
目前,我正在手动为模拟器提供 IP 地址。经过一番研究,我发现如果我的设备连接到Wifi,我可以使用以下方法。
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
但是在我的情况下它没有连接到wifi(连接到LAN),在这种情况下我该怎么办?
这是我目前拥有的。我想让我的应用程序自动选择其 IP 地址。
String url = "0.0.0.0"; // emulator ip
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
public String getLocalIpAddress() {
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();
Log.i(TAG, "***** IP="+ ip);
return ip;
}
}
}
} catch (SocketException ex) {
Log.e(TAG, ex.toString());
}
return null;
}
使用 getHostAddress :IP=fe70::75ca:a16d:ea5a:......
使用 hashCode 和 Formatter 您将获得实际 IP。
Varma Lanke 的回答很好。但它 returns IP 的顺序相反。为了解决
而不是这一行
String ip = Formatter.formatIpAddress(inetAddress.hashCode());
使用这个
String ip = inetAddress.getHostAddress();
了解更多详情。看这里getting device Ip
目前,我正在手动为模拟器提供 IP 地址。经过一番研究,我发现如果我的设备连接到Wifi,我可以使用以下方法。
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
但是在我的情况下它没有连接到wifi(连接到LAN),在这种情况下我该怎么办?
这是我目前拥有的。我想让我的应用程序自动选择其 IP 地址。
String url = "0.0.0.0"; // emulator ip
MediaPlayer mediaPlayer = new MediaPlayer();
mediaPlayer.setDataSource(url);
public String getLocalIpAddress() {
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();
Log.i(TAG, "***** IP="+ ip);
return ip;
}
}
}
} catch (SocketException ex) {
Log.e(TAG, ex.toString());
}
return null;
}
使用 getHostAddress :IP=fe70::75ca:a16d:ea5a:......
使用 hashCode 和 Formatter 您将获得实际 IP。
Varma Lanke 的回答很好。但它 returns IP 的顺序相反。为了解决
而不是这一行
String ip = Formatter.formatIpAddress(inetAddress.hashCode());
使用这个
String ip = inetAddress.getHostAddress();
了解更多详情。看这里getting device Ip