Jak mówi tytuł ... Próbuję uzyskać adres IP urządzenia wifi, gdy jest skonfigurowany jako hotspot. Idealnie, chciałbym znaleźć coś, co działa na wszystkie telefony.Jak zdobyć adres IP hotspotu Wi-Fi w systemie Android?
Oczywiście WifiManager jest bezużyteczny, jeśli chodzi o uzyskanie informacji z AP.
Na szczęście udało mi się uzyskać adresy IP wszystkich interfejsów w ten sposób:
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()) {
Log.d("IPs", inetAddress.getHostAddress());
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
Ten kawałek kodu wypisze wszystkie IP wszystkich interfejsów (Wi-Fi hotspot w zestawie). Głównym problemem jest to, że nie znajduję sposobu na identyfikację interfejsu Wi-Fi. Jest to problem, ponieważ niektóre telefony mają wiele interfejsów (WiMax itp.). To, co starałem dotąd:
- Filtering przez wifi nazwy wyświetlanej iface: nie jest to dobre podejście, ponieważ zmienia się nazwa wyświetlana z jednego urządzenia do drugiego (wlan0, eth0 wl0.1, etc) .
- Filtrowanie według adresu mac: prawie działa, ale na niektórych urządzeniach hotspot nie ma adresu MAC (iface.getHardwareAddress() zwraca null) ... więc nie jest to poprawne rozwiązanie.
Wszelkie sugestie?
Przykro mi, ale to nie jest rozwiązanie. Jak już wspomniałem, WifiManager jest bezużyteczny, gdy iface jest w trybie AP. Android "myśli", że Wifi jest wyłączone. Z drugiej strony próbowałem czegoś podobnego do rozwiązania, które oferujesz, ale używając adresu MAC zamiast adresu IP. Ale jak już wskazałem, to nie działa. Z jakiegoś powodu adres mac z iface wifi ma wartość null (w niektórych urządzeniach). – sirlion
@ sirlion, czy ACCESS_WIFI_STATE w Twoim manifeście? – tenorsax
Tak, jest. Zaufaj mi, to podejście nie działa. Możesz go wypróbować, jeśli chcesz ..:/ – sirlion