Я хочу получить текущий IP-адрес Android Emulator через код. Как это можно достичь?
Как получить IP-адрес эмулятора Android?
Ответ 1
Просто чтобы уточнить: из вашего приложения вы можете просто обратиться к эмулятору как "localhost" или 127.0.0.1.
Веб-трафик маршрутизируется через вашу машину разработки, поэтому внешний IP-эмулятор - это любой IP-адрес, назначенный вашим провайдером на этот компьютер. Машина разработки всегда может быть достигнута с вашего устройства в 10.0.2.2.
Поскольку вы спрашивали только об IP-эмуляторе, что вы пытаетесь сделать?
Ответ 2
Если вам действительно нужен IP-адрес, назначенный вашему эмулятору:
adb shell
ifconfig eth0
Что даст вам что-то вроде:
eth0: ip 10.0.2.15 mask 255.255.255.0 flags [up broadcast running multicast]
Ответ 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;
}
Проверьте документы для получения дополнительной информации: NetworkInterface.
Ответ 4
Используйте этот метод, вы получите 100% правильный IP-адрес для своего эмулятора Android
Чтобы получить IP-адрес эмулятора yoor
Перейдите в оболочку adb и введите следующую команду
adb shell
ifconfig eth0
После выполнения этой команды я получаю
IP: 10.0.2.15
Маска: 255.255.255.0
Что работает для меня. Я также работаю в сетевом приложении.
Ответ 5
Если вам нужно обратиться к локальному хосту вашего хоста, например, когда вы хотите, чтобы клиент эмулятора связался с сервером, работающим на том же хосте, используйте псевдоним 10.0.2.2, чтобы обратиться к хосту интерфейс петли компьютера. С точки зрения эмулятора localhost (127.0.0.1) ссылается на собственный интерфейс loopback. Подробнее: http://developer.android.com/guide/faq/commontasks.html#localhostalias
Ответ 6
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;
}