¿Es posible obtener la dirección IP del dispositivo usando algún código?
android
ip-address
Nilesh Tupe
fuente
fuente
Respuestas:
Esta es mi utilidad auxiliar para leer direcciones IP y MAC. La implementación es puramente java, pero tengo un bloque de comentarios en el
getMACAddress()
que podría leer el valor del archivo especial de Linux (Android). Ejecuté este código solo en algunos dispositivos y en el emulador, pero avíseme aquí si encuentra resultados extraños.Utils.java
fuente
toUpperCase()
. La capturaException
siempre es dudosa (y los métodos de ayuda deberían arrojarse de todos modos y dejar que la persona que llama lidie con la Excepción, aunque no lo modificó). Formato: no debe tener más de 80 líneas. Ejecución condicional paragetHardwareAddress()
- parche: github.com/Utumno/AndroidHelpers/commit/… . Que dices ?Esto funcionó para mí:
fuente
getHostAddress()
, que admite direcciones IPv4 e IPv6. Este método no es compatible con direcciones IPv6.Usé el siguiente código: La razón por la que usé hashCode fue porque estaba obteniendo algunos valores basura añadidos a la dirección IP cuando lo usé
getHostAddress
. PerohashCode
funcionó muy bien para mí, ya que puedo usar Formatter para obtener la dirección IP con el formato correcto.Aquí está el resultado de ejemplo:
1.uso
getHostAddress
:***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2.uso
hashCode
yFormatter
:***** IP=238.194.77.212
Como puede ver, el segundo método me da exactamente lo que necesito.
fuente
getHostAddress()
hará lo mismo que el formateador que agregaste.He agregado
inetAddress
instanceofInet4Address
para verificar si es una dirección ipv4.fuente
Aunque hay una respuesta correcta, comparto mi respuesta aquí y espero que de esta manera sea más conveniente.
fuente
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
El siguiente código puede ayudarlo. No olvide agregar permisos.
Agregue el siguiente permiso en el archivo de manifiesto.
feliz codificación !!
fuente
No necesita agregar permisos, como es el caso con las soluciones proporcionadas hasta ahora. Descargue este sitio web como una cadena:
http://www.ip-api.com/json
o
http://www.telize.com/geoip
La descarga de un sitio web como una cadena se puede hacer con el código de Java:
http://www.itcuties.com/java/read-url-to-string/
Analiza el objeto JSON así:
https://stackoverflow.com/a/18998203/1987258
El atributo json "query" o "ip" contiene la dirección IP.
fuente
fuente
El método getDeviceIpAddress devuelve la dirección IP del dispositivo y prefiere la dirección de la interfaz wifi si está conectada.
fuente
Esta es una revisión de esta respuesta que elimina la información irrelevante, agrega comentarios útiles, nombra las variables más claramente y mejora la lógica.
No olvide incluir los siguientes permisos:
InternetHelper.java:
fuente
versión minimalista de kotlin
fuente
fuente
Simplemente use Volley para obtener la ip de este sitio
fuente
Recientemente, aún se devuelve una dirección IP a
getLocalIpAddress()
pesar de estar desconectada de la red (sin indicador de servicio). Significa que la dirección IP que se muestra en Configuración> Acerca del teléfono> Estado era diferente de lo que pensaba la aplicación.He implementado una solución agregando este código antes:
¿Le suena eso a alguien?
fuente
en Kotlin, sin formateador
fuente
En su actividad, la siguiente función
getIpAddress(context)
devuelve la dirección IP del teléfono:fuente
Aquí está la versión de Kotlin de @Nilesh y @anargund
fuente
Un dispositivo puede tener varias direcciones IP, y la que está en uso en una aplicación en particular puede no ser la IP que verán los servidores que reciben la solicitud. De hecho, algunos usuarios usan una VPN o un proxy como Cloudflare Warp .
Si su propósito es obtener la dirección IP como se muestra en los servidores que reciben solicitudes de su dispositivo, lo mejor es consultar un servicio de geolocalización IP como Ipregistry (descargo de responsabilidad: trabajo para la empresa) con su cliente Java:
https://github.com/ipregistry/ipregistry-java
Además de ser realmente fácil de usar, obtiene información adicional como el país, el idioma, la moneda, la zona horaria de la IP del dispositivo y puede identificar si el usuario está usando un proxy.
fuente
Esta es la forma más fácil y simple que existe en Internet ... En primer lugar, agregue este permiso a su archivo de manifiesto ...
"INTERNET"
"ACCESS_NETWORK_STATE"
agregue esto en el archivo onCreate de Activity ..
Ahora agregue esta función a su MainActivity.class.
fuente
Si tienes una concha; ifconfig eth0 también funcionó para dispositivos x86
fuente
Por favor verifique este código ... Usando este código. obtendremos ip de internet móvil ...
fuente
No hago Android, pero abordaría esto de una manera totalmente diferente.
Envíe una consulta a Google, algo así como: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=my%20ip
Y consulte el campo HTML donde se publica la respuesta. También puede consultar directamente a la fuente.
A Google le gustará más estar allí por más tiempo que su Aplicación.
Solo recuerde, es posible que su usuario no tenga Internet en este momento, ¡qué le gustaría que pasara!
Buena suerte
fuente
Puedes hacerlo
fuente
fuente
Honestamente, solo estoy un poco familiarizado con la seguridad del código, por lo que esto puede ser hack-ish. Pero para mí esta es la forma más versátil de hacerlo:
fuente
Compilando algunas de las ideas para obtener la ip wifi de
WifiManager
una solución kotlin más agradable:Alternativamente, puede obtener las direcciones IP de los dispositivos de bucle invertido ip4 a través de
NetworkInterface
:fuente
Basado en lo que he probado, esta es mi propuesta
fuente