2015-08-13 10 views
1

Изнутри моей деятельности я пытаюсь получить 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-дал для моего устройства). Я просмотрел множество потоков на StackOverflow, но не помог им.

Кроме того, я не планирую использовать:

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

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

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

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

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

+0

только в качестве эталона http://itekblog.com/android-get-mobile-ip-address/ – matty357

+0

@ matty357 .. спасибо за ваш комментарий. Как вы можете видеть в моем вопросе, что я использовал и то, что было предложено в вашей рекомендуемой ссылке, но они не решают мою цель по причинам, о которых идет речь. – Sushil

ответ

-2

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

$ netcfg 

или

$ ip addr list 

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

$ busybox ifconfig