2009-11-12 23 views
57

Quiero obtener la dirección IP actual de Android Emulator a través del código. ¿Cómo se puede lograr?¿Cómo obtener la dirección IP del emulador de Android?

+1

Quizás relacionado [aquí] (http://stackoverflow.com/questions/7447221/how-to-connect-to-avd) y [aquí] (http://stackoverflow.com/questions/13217796/is- android-avds-firewall-somehow-more-restricted-to-real-android-firewall). – hhh

+0

@hhh El segundo enlace está roto. :) –

+1

@ MuhamedHuseinbašić Siento que este hilo resolvió el problema en el segundo hilo, así que decidí eliminarlo para mantener las cosas simples. – hhh

Respuesta

119

Solo para aclarar: desde su aplicación, simplemente puede referirse al emulador como 'localhost' o 127.0.0.1.

El tráfico web se enruta a través de su máquina de desarrollo, por lo que la IP externa del emulador es la IP asignada a esa máquina por su proveedor. La máquina de desarrollo siempre se puede alcanzar desde su dispositivo en 10.0.2.2.

Ya que solo preguntaba sobre el IP del emulador de IP, ¿qué está intentando hacer?

+6

Quiero invitarlo 100 veces para esto. No pude entender cómo mi aplicación podría hablar con otro servidor local que tenía funcionando hasta que leí tu publicación. ¡Gracias! – Spike

+0

¿Cómo se puede llegar a su máquina de desarrollo desde 10.0.2.2? Intenté hacer ping pero nada, pic [aquí] (http://i.stack.imgur.com/Yjv7W.jpg). Ifconfig -app a la derecha y terminal-emulator a la izquierda intentando hacer ping a dev-machine. No se puede ver nada en localhost, ¿alguna prueba simple? – hhh

+0

@hhh Puede probar JuiceSSH: https://play.google.com/store/apps/details?id=com.sonelli.juicessh Puede comunicarse con su host desde la IP mencionada o desde la IP real del host. Ambas variantes funcionan para mí. –

25

De esta manera:

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; 
} 

Verificar la documentación para obtener más información: NetworkInterface.

+4

Y no olvide el permiso 'android.permission.INTERNET' –

+2

Esto le da a la dirección IP6, cómo obtener IP4? –

3
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; 
} 
28

Si realmente desea que el IP asignado a su emulador:

adb shell 
ifconfig eth0 

que le dará algo como:

eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast] 
+0

esto era demasiado bueno pero esta dirección no hace ping desde mi pc :( –

+0

[Luise] (https://stackoverflow.com/users/6066443/louise) dijo: * Probé el método de Derek, puede hacer ping dentro de adb shell *. – SmokeDispenser

+0

Recibo este error después de 'adb shell':' ifconfig: eth0: No such such'any ideas why? – awavi

7

Si necesita hacer referencia a localhost de su equipo host , como cuando desea que el cliente del emulador se ponga en contacto con un servidor que se ejecuta en el mismo host, use el alias 10.0.2.2 para referirse a la interfaz de bucle invertido de la computadora host. Desde la perspectiva del emulador, localhost (127.0.0.1) se refiere a sus propios detalles de bucle invertido interface.More: http://developer.android.com/guide/faq/commontasks.html#localhostalias

12

El uso de este método que va a obtener el 100% dirección IP correcta para el emulador de Android

para obtener la dirección IP del emulador yoor

Ir a adb shell y escriba este comando

adb shell 
ifconfig eth0 

enter image description here

Después de ejecutar este comando que estoy recibiendo

IP: 10.0.2.15

Máscara: 255.255.255.0

que funciona para mí. También estoy trabajando para una aplicación de red.

Cuestiones relacionadas