0

(3Gではなく)WIFI接続で使用されるIPを取得したい。誰かがそれを行う方法を知っていますか?私が使用した:

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;

}

ただし、ICSでは3GIPを返します。

ありがとう、

アレックス

4

2 に答える 2

0

モバイルネットワークとホームWiFiネットワークの両方がプライベートIPアドレスを割り当てることができるため、IPアドレスに基づいて接続タイプを検出することはできません.

まず、モバイル ネットワークまたは WiFi 接続を検出し、その情報に基づいてその接続の IP アドレスを取得する必要があります。

このスレッドを SO で参照してください。これは、ICS の場合と同じ問題です。

于 2012-05-31T14:14:33.460 に答える
0
WifiInfo winfo = ((WifiManager)this.getSystemService(Context.WIFI_SERVICE)).getConnectionInfo();
winfo.getIpAddress();

上記を行う前に、Wifi に接続されているかどうかを確認することをお勧めします。

于 2012-05-31T13:59:13.213 に答える