AndroidデバイスのIPアドレスを正しく取得

1747 ワード

インターネット上ではandroidデバイスのIPアドレスを取得する記事が少なくありません.一般的な記事がありますが、IPv 6のアドレスをデフォルトで取得しているデバイスもあります.そのコードはIPv 6のアドレスを取得しています.しかし、これは明らかに私たちが望んでいるものではありません.IPv 4のアドレスが必要です.コードはこのように修正する必要があります.
try {
            for (Enumeration en = NetworkInterface
                    .getNetworkInterfaces(); en.hasMoreElements();) {
                NetworkInterface intf = en.nextElement();
                for (Enumeration enumIpAddr = intf
                        .getInetAddresses(); enumIpAddr.hasMoreElements();) {
                    InetAddress inetAddress = enumIpAddr.nextElement();
                    if (!inetAddress.isLoopbackAddress() && inetAddress instanceof Inet4Address) {  //IPv4  
                        return inetAddress.getHostAddress().toString();
                    }
                }
            }
        } catch (SocketException ex) {
            Log.d("IP", ex.toString());
        }

 
赤いコードに注意して、このように得たのはIPv 4のアドレスです!