web-dev-qa-db-fra.com

Comment obtenir l'adresse IP de l'émulateur Android?

Je souhaite obtenir l'adresse IP actuelle de émulateur Android par le biais d'un code. Comment peut-on y arriver?

66
Rajapandian

Juste pour clarifier: depuis votre application, vous pouvez simplement vous référer à l'émulateur en tant que 'localhost' ou 127.0.0.1.

Le trafic Web est acheminé via votre ordinateur de développement. Par conséquent, l'adresse IP externe de l'émulateur correspond à l'adresse IP attribuée à cet ordinateur par votre fournisseur. La machine de développement est toujours accessible à partir de votre appareil à la 10.0.2.2.

Puisque vous ne posiez que des questions sur le IP de l'émulateur, que tentez-vous de faire?

139
Matthias

Si vous voulez vraiment que l'adresse IP soit assignée à votre émulateur:

adb Shell
ifconfig eth0

Ce qui vous donnera quelque chose comme:

eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
31
Derek Shockey

Comme ça:

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

Vérifiez la documentation pour plus d’informations: NetworkInterface .

26
Marcin Gil

tilisez cette méthode, vous obtiendrez une adresse IP correcte à 100% pour votre Android émulateur

Pour obtenir l'adresse IP de votre émulateur

Allez à Shell adb et tapez cette commande

adb Shell
ifconfig eth0

enter image description here

Après avoir exécuté cette commande, je reçois

IP: 10.0.2.15

masque: 255.255.255.

Ce qui fonctionne pour moi Je travaille également pour une application de réseau.

16
Nikhil Agrawal

Si vous devez vous référer à l'hôte local de votre ordinateur hôte, par exemple lorsque vous souhaitez que le client émulateur contacte un serveur s'exécutant sur le même hôte, utilisez l'alias 10.0.2.2 pour faire référence à l'interface de bouclage de l'ordinateur hôte. Du point de vue de l'émulateur, localhost (127.0.0.1) fait référence à sa propre interface de bouclage. Plus de détails: http://developer.Android .com/guide/faq/commontasks.html # localhostalias

10
mahbub_siddique
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;
}
3
den