Ich möchte die IP-Adresse des aktuell ausgeführten Android Emulators über Code abrufen. Wie kann es erreicht werden?
Ich möchte die IP-Adresse des aktuell ausgeführten Android Emulators über Code abrufen. Wie kann es erreicht werden?
Antworten:
Zur Verdeutlichung: In Ihrer App können Sie den Emulator einfach als 'localhost' oder 127.0.0.1 bezeichnen.
Der Webdatenverkehr wird über Ihren Entwicklungscomputer geleitet, sodass die externe IP-Adresse des Emulators die IP-Adresse ist, die Ihr Computer diesem Computer zugewiesen hat. Die Entwicklungsmaschine ist immer unter Ihrem Gerät unter 10.0.2.2 erreichbar.
Was versuchen Sie zu tun, da Sie nur nach der IP des Emulators gefragt haben?
10.0.2.1
, nicht direkt. Es sollte also eine zusätzliche Verbindung zwischen diesem Router 10.0.2.1
und dem Host / Dev-Computer stattfinden 127.0.0.1/10.0.2.2
. Was ich normalerweise normalerweise ändere die Portnummer möchte ich verbinden.
Wenn Sie wirklich möchten, dass die IP Ihrem Emulator zugewiesen wird:
adb shell
ifconfig eth0
Welches gibt Ihnen so etwas wie:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
adb shell
: ifconfig: eth0: No such device
irgendwelche Ideen warum?
wlan0
So was:
public String getLocalIpAddress() {
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();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
Weitere Informationen finden Sie in den Dokumenten: NetworkInterface .
Mit dieser Methode erhalten Sie eine 100% korrekte IP-Adresse für Ihren Android-Emulator
Um die IP-Adresse Ihres Emulators zu erhalten
Gehen Sie zur ADB-Shell und geben Sie diesen Befehl ein
adb shell
ifconfig eth0
Nachdem ich diesen Befehl ausgeführt habe, erhalte ich
IP: 10.0.2.15
Maske: 255.255.255.0
Welches funktioniert bei mir. Ich arbeite auch für eine Netzwerkanwendung.
Wenn Sie auf den lokalen Host Ihres Host-Computers verweisen müssen, z. B. wenn der Emulator-Client einen Server kontaktieren soll, der auf demselben Host ausgeführt wird, verwenden Sie den Alias 10.0.2.2 , um auf die Loopback-Schnittstelle des Host-Computers zu verweisen. Aus der Sicht des Emulators bezieht sich localhost (127.0.0.1) auf seine eigene Loopback-Schnittstelle. Weitere Details: http://developer.android.com/guide/faq/commontasks.html#localhostalias
public String getLocalIpAddress() {
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();
if (!inetAddress.isLoopbackAddress()) {
return inetAddress.getHostAddress().toString();
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}