古いコードをいくつか取り上げて再ビルドしました。私のタブレットと電話機で動作していたメソッドの1つが機能しなくなりました。私は私のIPアドレスを取得するためにここでピックアップルーチンを使用しようとしています。NetworkInterface.getNetworkInterfaces()はnullメッセージ文字列で例外をスローします
"for(Enumeration ..."で始まる行4を実行すると、すぐに例外キャッチセクションにジャンプします。例外にはメッセージはなく、文字列に対してはex.getMessage()がnullを返します。番号は830034796568(10進数)である。
ここでコードがあります。Asこれは一年前にうまく働いた。任意の助け
ありがとう!
public String getLocalIpAddress() {
String address= null;
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();
address = new String(inetAddress.getHostAddress().toString());
if (!inetAddress.isLoopbackAddress() && address.length() < 18) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
String msg = ex.getMessage();
//do nothing
}
return null;
}
RuntimeExceptionにSocketExceptionをラップして再スローして、完全なスタックトレースを確認できますか? – alex
私はそれを「RuntimeExceptionを投げる」ように変更しました(例); Eclipseデバッガで表示されるstacktraceはnullです。これは少し新しく起動します。私は – moticon
アンドロイドのパーミッションを許可していましたが、android.permission.ACCESS_NETWORK_STATE。 – moticon