No se puede hacer la búsqueda DNS inversa en Android

Tengo un dispositivo Android conectado a una red Wifi con una dirección IP. Hice la búsqueda de NS en mi computadora de Linux de esta dirección del IP y verifiqué que hay un hostname correspondiente para esa dirección del IP.

Tengo un pedazo de código Java, que cuando se ejecuta en mi PC con Windows no invertir búsqueda de DNS bien (devuelve un nombre de host):

String dnSuffix; String ipAddress = "10.228.59.217"; InetAddress inetAddr; try { //inetAddr = InetAddress.getLocalHost(); inetAddr = InetAddress.getByName(ipAddress); //System.out.println("inetAddr = " + inetAddr); Log.v(LOG_TAG, "inetAddr = " + inetAddr); if (inetAddr != null) { dnSuffix = inetAddr.getHostName(); //System.out.println("dnSuffix is " + dnSuffix); Log.v(LOG_TAG,"dnSuffix is " + dnSuffix); } } catch (UnknownHostException e) { //System.out.println("Error getting DN suffix: " + e.getMessage()); Log.v(LOG_TAG,"Error getting DN suffix: " + e.getMessage()); } 

dnSuffix es el nombre de host como se espera en Windows.

Pero en Android, devuelve una dirección IP en lugar de un nombre de host, lo que indica que falló.

Tengo todos los permisos que creo que necesito para esto en mi aplicación:

 <uses-permission android:name="android.permission.INTERNET"></uses-permission> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" ></uses-permission> <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

Encontré esta documentación:

GetCanonicalHostName

Public String getCanonicalHostName ()

Obtiene el nombre de dominio completo para esta dirección IP. Método de mejor esfuerzo, lo que significa que no podemos devolver el FQDN dependiendo de la configuración del sistema subyacente. Si hay un administrador de seguridad, este método llama primero su método checkConnect con el nombre de host y -1 como sus argumentos para ver si el código de llamada tiene permiso para conocer el nombre de host de esta dirección IP, es decir, para conectarse al host. Si la operación no está permitida, devolverá la representación textual de la dirección IP.

Devoluciones:

El nombre de dominio completo para esta dirección IP, o si la operación no está permitida por la comprobación de seguridad, la representación textual de la dirección IP.

Ya que:

1,4

Ver también:

SecurityManager.checkConnect (java.lang.String, int)

También encontré a alguien que tenía un problema similar:

GetCanonicalHostName devuelve una dirección IP

Pero no hay resolución.

¿Puede alguien proporcionar alguna ayuda en absoluto?

Realmente no estoy seguro de que pueda funcionar en absoluto, siguiendo las fuentes 2.3 (acortadas)

 inetAddr = InetAddress.getByName(ipAddress); getByName(numeric) -> getAllByName/Impl(numeric) -> lookupHostByName(numeric) return bytesToInetAddresses(getaddrinfo(host), host)[0] 

Host es la cadena numérica, a continuación, llamar a getHostName () en el objeto resultante volverá host (el ip)

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.