自身のIP取得方法をGoogle先生に聞いてみるとあれこれ出てくるのですがどうもうまく動きません。
調べてみると InetAddressUtils.isIPv4Address() が "192.168.0.100" に対して false を返してくる…
これじゃァ駄目だ…
他の方法もいくつかあったのですがなんか書かれていることと結果が微妙に違っていたりするので適当に自分で作ってみました。
public String getLocalIpAddress() {
String ip = null;
try {
// インターフェースを列挙
Enumeration<networkinterface> en = NetworkInterface.getNetworkInterfaces();
while ( (ip == null) && en.hasMoreElements() ) {
// インターフェースオブジェクトを取得
NetworkInterface ni = en.nextElement();
// このインターフェースのアドレスを列挙
Enumeration<inetaddress> ei = ni.getInetAddresses();
while (ei.hasMoreElements()) {
// アドレスを取得
InetAddress ia = ei.nextElement();
// IPv4でなければ無視
if ( !(ia instanceof java.net.Inet4Address) ) {
continue;
}
// ループバックアドレスは無視
if ( ia.isLoopbackAddress() ) {
continue;
}
// IPアドレスを取得
ip = ia.getHostAddress();
break;
}
}
} catch (Exception ex) {
Log.e("getLocalIpAddress: ", ex.toString());
}
return ip;
}
取得したInetAddress オブジェクトのクラスをチェックするというヤクザな方法なので、あまり参考にはならないかもしれません^^;
0 件のコメント:
コメントを投稿