Como dice el título ... Estoy tratando de obtener la IP del wifi iface cuando está configurado como punto de acceso. Idealmente, me gustaría encontrar algo que funcione para todos los teléfonos.cómo obtener la IP del punto de acceso wifi en Android?
Por supuesto, WifiManager es inútil a la hora de obtener información del AP.
Por suerte, he sido capaz de obtener las direcciones IP de todas las interfaces al hacer esto:
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;
}
Este trozo de código imprimirá toda la IP de todas las interfaces (punto de acceso WiFi incluido). El principal problema es que no encuentro una forma de identificar la interfaz WiFi. Este es un problema ya que algunos teléfonos tienen múltiples interfaces (WiMax, etc.). Esto es lo que he probado hasta ahora:
- Filtrado por el nombre de visualización del iface wifi: no es un buen enfoque porque el nombre de visualización cambia de un dispositivo a otro (wlan0, eth0, wl0.1, etc) .
- Filtrado por su dirección MAC: casi funciona, pero en algunos dispositivos el punto de acceso iface no tiene una dirección MAC (iface.getHardwareAddress() devuelve nulo) ... por lo que no es una solución válida.
¿Alguna sugerencia?
Lo siento, pero esa no es la solución. Como dije antes, WifiManager es inútil cuando el iface está en modo AP. Android "piensa" que Wifi está deshabilitado. Por otro lado, probé algo similar a la solución que proporciona, pero usando la dirección MAC en lugar de la dirección IP. Pero como ya señalé, no funciona. Por algún motivo, la dirección MAC del wifi iface es nula (en algunos dispositivos). – sirlion
@sirlion, ¿está ACCESS_WIFI_STATE en su manifiesto? – tenorsax
Sí, lo es. Confía en mí, ese enfoque no funciona. Puedes intentarlo si quieres ..:/ – sirlion