Получить IP-адрес устройства

Из своей деятельности я пытаюсь получить IP-адрес моего устройства. Я использую следующий код для этого:

public static 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() && inetAddress instanceof Inet4Address) {
                        return inetAddress.getHostAddress();
                    }
                }
            }
        } catch (SocketException ex) {
            ex.printStackTrace();
        }
        return null;
    }

Но эта функция не возвращает мне правильный IP-адрес (возможно, он возвращает IP-адрес маршрутизатора, а не IP-адрес прокси, указанный для моего устройства). Я перебрал множество тем в Stackru, но ни одна из них не помогла.

Также я не планирую использовать:

WifiManager wifiMan = (WifiManager) this.getSystemService(this.WIFI_SERVICE);
        WifiInfo wifiInf = wifiMan.getConnectionInfo();
        int ipAddress = wifiInf.getIpAddress();

так как в некоторых случаях мои устройства подключены, а не беспроводные

Может кто-нибудь подсказать, как из кода получить правильный ip-адрес моего устройства?

В идеале, я бы хотел, чтобы в случае, если устройство подключено к проводной / беспроводной сети, оно должно давать правильный IP-адрес устройства. В некоторых ситуациях мое устройство подключено к сети.

Спасибо за любую помощь.

0 ответов

Вы можете проанализировать одну из этих команд оболочки:

$ netcfg

или же

$ ip addr list

или (требуется busybox)

$ busybox ifconfig
Другие вопросы по тегам