web-dev-qa-db-ja.com

LAN IPアドレスの取得(192.168.xxxx)(IPV4)

私のAndroidデバイスでIPアドレス(IPV4)を見つけようとしています。
次のコードを実行すると

InetAddress inet = InetAddress.getLocalHost();
System.out.println(inet.getHostAddress()); //giving me 127.0.0.1

コードは私に127.0.0.1を与えています。
実際のIP198.168.xx.xxを取得したかった。

(私のPCでは、同じコードで実際のIPを取得できます。)

15
Vishnudev K
public static String getIpAddress() { 
            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) {
                            String ipAddress=inetAddress.getHostAddress().toString();
                            Log.e("IP address",""+ipAddress);
                            return ipAddress;
                        }
                    }
                }
            } catch (SocketException ex) {
                Log.e("Socket exception in GetIP Address of Utilities", ex.toString());
            }
            return null; 
    }

権限を与える

マニフェストも追加します。

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_NETWORK_STATE" />
25
Ayush

これを使用してIPアドレスを取得できます。

WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
int ipAddress = wifiManager.getConnectionInfo().getIpAddress();
return String.format("%d.%d.%d.%d", (ipAddress & 0xff), (ipAddress >> 8 & 0xff),
        (ipAddress >> 16 & 0xff), (ipAddress >> 24 & 0xff));

これにより、「X.X.X.X」の形式の文字列として返されます。

manifest.xmlで必要な唯一の権限は

<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />
2
Ken Wolf