Est-il possible d'obtenir l'adresse IP de l'appareil à l'aide d'un code?
android
ip-address
Nilesh Tupe
la source
la source
Réponses:
Ceci est mon aide pour lire les adresses IP et MAC. L'implémentation est pure-java, mais j'ai un bloc de commentaires dans
getMACAddress()
lequel pourrait lire la valeur du fichier spécial Linux (Android). J'ai exécuté ce code uniquement sur quelques appareils et émulateur, mais faites-moi savoir ici si vous trouvez des résultats étranges.Utils.java
la source
toUpperCase()
. La captureException
est toujours douteuse (et les méthodes d'assistance devraient de toute façon lancer et laisser l'appelant gérer l'exception - n'a pas modifié cela cependant). Formatage: ne doit pas dépasser 80 lignes. Exécution conditionnelle pourgetHardwareAddress()
- patch: github.com/Utumno/AndroidHelpers/commit/… . Ce que tu dis ?Cela a fonctionné pour moi:
la source
getHostAddress()
, qui prend en charge les adresses IPv4 et IPv6. Cette méthode ne prend pas en charge les adresses IPv6.J'ai utilisé le code suivant: La raison pour laquelle j'ai utilisé hashCode était parce que j'obtenais des valeurs de poubelle ajoutées à l'adresse IP lorsque j'utilisais
getHostAddress
. Mais celahashCode
a très bien fonctionné pour moi car je peux alors utiliser Formatter pour obtenir l'adresse IP avec un formatage correct.Voici l'exemple de sortie:
1. en utilisant
getHostAddress
:***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2. utiliser
hashCode
etFormatter
:***** IP=238.194.77.212
Comme vous pouvez le voir, la 2e méthode me donne exactement ce dont j'ai besoin.
la source
getHostAddress()
fera la même chose que le truc du formateur que vous avez ajouté.J'ai ajouté
inetAddress
instanceofInet4Address
pour vérifier s'il s'agit d'une adresse ipv4.la source
Bien qu'il y ait une bonne réponse, je partage ma réponse ici et j'espère que cette méthode sera plus pratique.
la source
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Le code ci-dessous pourrait vous aider .. N'oubliez pas d'ajouter des autorisations ..
Ajoutez l'autorisation ci-dessous dans le fichier manifeste.
codage heureux !!
la source
Vous n'avez pas besoin d'ajouter des autorisations comme c'est le cas avec les solutions fournies jusqu'à présent. Téléchargez ce site Web sous forme de chaîne:
http://www.ip-api.com/json
ou
http://www.telize.com/geoip
Le téléchargement d'un site Web sous forme de chaîne peut se faire avec du code java:
http://www.itcuties.com/java/read-url-to-string/
Analysez l'objet JSON comme ceci:
https://stackoverflow.com/a/18998203/1987258
L'attribut json "query" ou "ip" contient l'adresse IP.
la source
la source
La méthode getDeviceIpAddress renvoie l'adresse IP de l'appareil et préfère l'adresse de l'interface wifi s'il est connecté.
la source
Il s'agit d'une refonte de cette réponse qui supprime les informations non pertinentes, ajoute des commentaires utiles, nomme les variables plus clairement et améliore la logique.
N'oubliez pas d'inclure les autorisations suivantes:
InternetHelper.java:
la source
version minimaliste kotlin
la source
la source
Utilisez simplement Volley pour obtenir l'ip de ce site
la source
Récemment, une adresse IP est toujours retournée
getLocalIpAddress()
malgré sa déconnexion du réseau (pas d'indicateur de service). Cela signifie que l'adresse IP affichée dans Paramètres> À propos du téléphone> État était différente de ce que pensait l'application.J'ai implémenté une solution de contournement en ajoutant ce code avant:
Est-ce que cela vous dit quelque chose?
la source
à Kotlin, sans formateur
la source
Dans votre activité, la fonction suivante
getIpAddress(context)
renvoie l'adresse IP du téléphone:la source
Voici la version kotlin de @Nilesh et @anargund
la source
Un appareil peut avoir plusieurs adresses IP, et celle utilisée dans une application particulière peut ne pas être l'adresse IP que les serveurs recevant la demande verront. En effet, certains utilisateurs utilisent un VPN ou un proxy tel que Cloudflare Warp .
Si votre objectif est d'obtenir l'adresse IP comme indiqué par les serveurs qui reçoivent des demandes de votre appareil, le mieux est d'interroger un service de géolocalisation IP tel que Ipregistry (avertissement: je travaille pour l'entreprise) avec son client Java:
https://github.com/ipregistry/ipregistry-java
En plus d'être vraiment simple à utiliser, vous obtenez des informations supplémentaires telles que le pays, la langue, la devise, le fuseau horaire de l'IP de l'appareil et vous pouvez identifier si l'utilisateur utilise un proxy.
la source
C'est le moyen le plus simple et le plus simple qui ait jamais existé sur Internet ... Tout d'abord, ajoutez cette autorisation à votre fichier manifeste ...
"L'INTERNET"
"ACCESS_NETWORK_STATE"
ajoutez ceci dans le fichier onCreate of Activity.
Ajoutez maintenant cette fonction à votre MainActivity.class.
la source
Si vous avez un obus; ifconfig eth0 fonctionnait également pour les périphériques x86
la source
Veuillez vérifier ce code ... Utilisation de ce code. nous obtiendrons ip de l'Internet mobile ...
la source
Je ne fais pas Android, mais j'aborderais cela d'une manière totalement différente.
Envoyez une requête à Google, quelque chose comme: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=my%20ip
Et reportez-vous au champ HTML où la réponse est publiée. Vous pouvez également interroger directement la source.
Google préfère être là plus longtemps que votre application.
N'oubliez pas, il se peut que votre utilisateur ne dispose pas d'Internet pour le moment, qu'aimeriez-vous qu'il se passe!
Bonne chance
la source
Tu peux le faire
la source
la source
En toute honnêteté, je ne suis qu'un peu familier avec la sécurité du code, donc cela peut être hack-ish. Mais pour moi, c'est la façon la plus polyvalente de le faire:
la source
Compiler certaines des idées pour obtenir l'ip wifi de la
WifiManager
dans une meilleure solution kotlin:Alternativement, vous pouvez obtenir les adresses IP des périphériques de bouclage ip4 via
NetworkInterface
:la source
Sur la base de ce que j'ai testé, voici ma proposition
la source