Ich möchte die IP-Adresse des aktuell ausgeführten Android Emulators über Code abrufen. Wie kann es erreicht werden?
75
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?
quelle
10.0.2.1
, nicht direkt. Es sollte also eine zusätzliche Verbindung zwischen diesem Router10.0.2.1
und dem Host / Dev-Computer stattfinden127.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:
Welches gibt Ihnen so etwas wie:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
quelle
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 .
quelle
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
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.
quelle
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
quelle
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; }
quelle
Innerhalb des Codes meiner App kann ich die IP-Adresse des laufenden Geräts einfach wie unten erhalten:
quelle