2012-07-11 10 views
0

의 IP를 얻기 나는 IP 주소를 아래와 같이 가지고 기능 사용 :안드로이드 와이파이 라우터

public static final String IPV4_REGEX = "\\A(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)(\\.(25[0-5]|2[0-4]\\d|[0-1]?\\d?\\d)){3}\\z"; 
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.getHostAddress().toString().matches(IPV4_REGEX))) { 
        return /*inetAddress.getHostName()+"~|~"+*/inetAddress.getHostAddress().toString(); 
       } 

      } 
     } 
    } catch (SocketException ex) { 
     ex.printStackTrace(); 
    } 
    return null; 
} 

를하지만 처음 appropriate IP 주소를 가져옵니다 나타났습니다. SIM 카드를 넣을 때까지 잘 작동합니다. 그 후에 그것은 모바일 WiFi의 IP가 아닌 모바일 IP를 얻습니다! 그래서이 상황을 어떻게 배제할지 알고 싶습니다. Wi-Fi 라우터의 로컬 IP 만 가져오고 싶습니다. 고마워.

답변

1

코드

WifiManager myWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); 
WifiInfo myWifiInfo = myWifiManager.getConnectionInfo(); 
int ipAddress = myWifiInfo.getIpAddress(); 
System.out.println("WiFi address is " + android.text.format.Formatter.formatIpAddress(ipAddress)); 

아래의 사용 및

<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 
+0

이가 매니페스트 파일에 권한을 추가 테 더링와 함께 작동? – Nolesh

+0

IPv6을 제외합니까? – Nolesh

+0

이것은 단지 와이파이 IP 주소를 반환합니다 –

관련 문제