Je souhaite obtenir l'adresse IP actuelle de émulateur Android par le biais d'un code. Comment peut-on y arriver?
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?
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]
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 .
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
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.
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
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;
}