Podniosłem stary kod do przebudowania i jedna z metod używanych do pracy na moim tablecie i telefonie już nie działa. Próbuję użyć rutyny, którą wybrałem tutaj, aby uzyskać mój adres IP.NetworkInterface.getNetworkInterfaces() generuje wyjątek z pustym łańcuchem komunikatów
Gdy program wykonuje wiersz 4 (zaczynając od "for (Enumeration ..."), natychmiast przeskakuje do sekcji catch wyjątków.Wyjątek nie ma komunikatu, a dla ciągu ex.getMessage() zwraca wartość null. liczba jest 830034796568 (dziesiętny).
Oto kod. Jak wspomniano to działało dobrze rok temu.
Dzięki za wszelką pomoc!
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;
}
Czy możesz owinąć wyjątek SocketException w RuntimeException i ponownie go rzucić, abyśmy mogli zobaczyć pełny stacktrace? – alex
Zmieniłem go na "throw RuntimeException (ex), stacktrace pokazane przez debugger Eclipse ma wartość null Jestem trochę nowy w tym i zardzewiały na rozruch.Czy jest coś, co mogę zrobić, aby pokazać informacje, które pomogą innym pomóc ja? – moticon
Pozwoliłem na pozwolenie dla android.permission.INTERNET, ale chybiłem android.permission.ACCESS_NETWORK_STATE. – moticon