Как говорится в заголовке... Я пытаюсь получить IP-адрес wifi iface, когда он настроен как точка доступа. В идеале я хотел бы найти что-то, что работает для всех телефонов.
Конечно, WifiManager бесполезен, когда дело доходит до получения информации от AP.
К счастью, я смог получить IP-адреса всех интерфейсов, выполнив следующие действия:
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;
}
Этот кусок кода распечатает весь IP-адрес всех интерфейсов (включая горячую точку Wi-Fi). Основная проблема заключается в том, что я не нахожу способ идентифицировать интерфейс WiFi. Это проблема, поскольку некоторые телефоны имеют несколько интерфейсов (WiMax и т.д.). Это то, что я пробовал до сих пор:
- Фильтрация с помощью отображаемого имени wifi iface: это не очень хороший подход, поскольку отображаемое имя изменяется с одного устройства на другое (wlan0, eth0, wl0.1 и т.д.).
- Фильтрация по его MAC-адресу: почти работает, но на некоторых устройствах точка доступа iface не имеет MAC-адрес (iface.getHardwareAddress() возвращает null)... поэтому недействительное решение.
Любые предложения?