2012-05-31 4 views
0

Я хочу получить IP-адрес, используемый WIFI-соединением (а не 3G). Кто-нибудь знает, как это сделать? я использовал:android: получить IP через WIFI на ICS

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()) { 
       return inetAddress.getHostAddress().toString(); 
      } 
     } 
    } 
} catch (SocketException ex) { 
    Log.e(LOG_TAG, ex.toString()); 
} 
return null; 

}

но он возвращает IP 3G на ICS.

Спасибо,

Alex

+0

Check http://stackoverflow.com/a/7975955/1321873 – Rajesh

ответ

0

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

Что вам нужно сделать, это сначала обнаружить, что у вас есть мобильная сеть или WiFi-соединение, а затем на основе этой информации получить IP-адрес этого соединения.

Посмотрите этот thread в SO это та же проблема, как ваш на ICS

0
WifiInfo winfo = ((WifiManager)this.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo(); 
winfo.getIpAddress(); 

Вы можете проверить, если вы подключены к Wi-Fi до делать выше

+0

требуется разрешение: <использует-разрешение андроида: Name = "android.permission .ACCESS_WIFI_STATE "/> –

Смежные вопросы