Ho recuperato un vecchio codice di mio per ricostruire e uno dei metodi utilizzati per il mio tablet e telefono non funziona più. Sto cercando di usare una routine che ho scelto qui per ottenere il mio indirizzo IP.NetworkInterface.getNetworkInterfaces() genera un'eccezione con una stringa di messaggi null
Quando il programma esegue la riga 4 (che inizia con "per (Enumerazione ...") salta immediatamente alla sezione di cattura delle eccezioni L'eccezione non ha alcun messaggio e per la stringa ex.getMessage() restituisce null. numero è 830.034.796.568 (decimale).
Ecco il codice. Come già detto questo ha funzionato bene un anno fa.
Grazie per qualsiasi aiuto!
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;
}
È possibile racchiudere SocketException in una RuntimeException e ridistribuirlo in modo da poter vedere lo stacktrace completo? – alex
L'ho modificato in "throw RuntimeException (ex); lo stacktrace mostrato dal debugger di Eclipse è nullo, sono un po 'nuovo e arrugginito per l'avvio. C'è qualcosa che posso fare per mostrare le informazioni che aiuteranno gli altri ad aiutare io? – moticon
stavo permettendo il permesso per android.permission.INTERNET, ma mancavo android.permission.ACCESS_NETWORK_STATE. – moticon