Ich nahm etwas alten Code von mir auf, um wieder aufzubauen, und eine der Methoden, die an meinem Tablet und Telefon arbeiteten, funktioniert nicht mehr. Ich versuche, eine Routine zu verwenden, die ich hier abgeholt habe, um meine IP-Adresse zu bekommen.NetworkInterface.getNetworkInterfaces() löst Ausnahme mit null Nachrichtenzeichenfolge
Wenn das Programm Zeile 4 ausführt (beginnend mit "for (Enumeration ...") springt es sofort in den Ausnahmefangabschnitt. Die Ausnahme hat keine Nachricht und für die Zeichenfolge gibt ex.getMessage() null zurück Nummer 830034796568 (dezimal).
Hier ist der Code. Wie bereits erwähnt diese feinen vor einem Jahr gearbeitet.
Vielen Dank für jede Hilfe!
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;
}
Können Sie die SocketException in eine RuntimeException umbrechen und erneut ausführen, damit wir den vollständigen StackTrace sehen können? – alex
Ich habe es in "throw RuntimeException (ex) geändert. Der StackTrace vom Eclipse-Debugger ist null. Ich bin ein bisschen neu und rostig. Gibt es etwas, was ich tun kann, um die Informationen zu zeigen, die anderen helfen können." – moticon
Ich erlaubte die Erlaubnis für android.permission.INTERNET, aber vermisste android.permission.ACCESS_NETWORK_STATE.One – moticon