如何在 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