Comment faire pour obtenir l'adresse IP de l'appareil à partir du code?
Est-il possible d'obtenir l'adresse IP de l'appareil à l'aide du code?
- N'oubliez pas que c'est une collection de taille N, et vous ne pouvez pas supposer que N == ( 0 || 1 ). En d'autres termes, ne pas supposer que l'appareil ne dispose que d'une façon de parler à un réseau et ne présumez pas qu'elle a une façon de parler à un réseau à tous.
- Connexes: stackoverflow.com/questions/9481865/...
- non programmatique version android.stackexchange.com/questions/2984/...
- Vous devriez l'obtenir à partir d'un service externe ipof.en/txt> est un de ces services
- est-il possible de l'obtenir par programmation sous android?
- Voir ma réponse dans stackoverflow.com/questions/16730711/...
Vous devez vous connecter pour publier un commentaire.
C'est mon aide util pour lire les adresses IP et MAC. La mise en œuvre est en pur java, mais j'ai un bloc de commentaire dans
getMACAddress()
qui peut lire la valeur de la spéciale de Linux(Android) fichier. J'ai fait ce code uniquement sur quelques dispositifs et l'Émulateur mais laissez-moi savoir ici si vous trouvez des résultats bizarres.Utils.java
toUpperCase()
. La capture deException
est toujours douteux (et les méthodes d'aide à lancer de toute façon et laisser l'appelant à traiter, à l'Exception - ne pas modifier ce bien). Mise en forme : ne devrait pas être plus de 80 lignes. Exécution conditionnelle pourgetHardwareAddress()
- patch : github.com/Utumno/AndroidHelpers/commit/.... Ce que vous dites ?toUpperCase()
?getMACAddress(null)
et de voir ce qui est retourné. Débogage de l'impression de tous les noms d'interface pour voir ce que votre appareil est à l'aide. Modifier la même méthode pour imprimer un logcat.getMACAddress(null)
est à l'aide de la première interface trouvé. Vous devrez peut-être l'impression de tous les noms d'interface pour voir votre appareil de nommage.Cela a fonctionné pour moi:
getHostAddress()
, qui prend en charge les adresses IPv4 et IPv6. Cette méthode ne prend pas en charge les adresses IPv6.getApplicationContext().getSystemService(WIFI_SERVICE)
Formatter.formatIpAddress()
est obsolète.J'ai utilisé le code suivant:
La raison, j'ai utilisé hashCode était parce que je recevais des ordures valeurs ajoutées de l'adresse ip lorsque j'ai utilisé
getHostAddress
. MaishashCode
vraiment bien fonctionné pour moi aussi alors je peux utiliser Formateur pour obtenir l'adresse ip avec le formatage correct.Voici l'exemple de sortie :
1.à l'aide de
getHostAddress
:***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2.à l'aide de
hashCode
etFormatter
:***** IP=238.194.77.212
Comme vous pouvez le voir 2e méthodes me donne exactement ce dont j'ai besoin.
getHostAddress()
fera la même chose que le formateur des trucs que vous avez ajouté.J'ai ajouté
inetAddress
instanceofInet4Address
pour vérifier si c'est une adresse ipv4.Si il y a une bonne réponse, je partage ma réponse ici et espère que de cette façon plus de commodité.
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Code ci-dessous peut vous aider.. N'oubliez pas d'ajouter des autorisations..
Ajouter en-dessous de l'autorisation dans le fichier manifest.
codage heureux!!
Vous n'avez pas besoin d'ajouter des autorisations comme ce qui est le cas avec les solutions proposées jusqu'à présent. Télécharger ce site comme une chaîne de caractères:
http://www.ip-api.com/json
ou
http://www.telize.com/geoip
Le téléchargement d'un site web comme une chaîne de caractères qui peut être fait avec du code java:
http://www.itcuties.com/java/read-url-to-string/
Analyser l'objet JSON comme ceci:
https://stackoverflow.com/a/18998203/1987258
Le json attribut "requête" ou "ip" contient l'adresse IP.
Méthode getDeviceIpAddress retourne adresse ip du périphérique et préfère l'interface wi-fi, l'adresse s'il connecté.
Récemment, une adresse IP est toujours retourné par
getLocalIpAddress()
en dépit d'être déconnecté du réseau (pas d'indicateur de service). Il signifie que l'adresse IP affichée dans les Paramètres> à Propos du téléphone> Statut est différent de ce que l'application de la pensée.J'ai mis en place une solution de contournement par l'ajout de ce code avant:
Ne fait que sonner une cloche à quelqu'un?
C'est une refonte de cette réponse qui supprime les informations non pertinentes, ajoute des commentaires utiles, les noms de variables plus clairement, et améliore la logique.
N'oubliez pas d'inclure les autorisations suivantes:
InternetHelper.java:
Si vous avez un shell ; ifconfig eth0 travaillé pour x86 appareil trop
Simplement utiliser Volley obtenir l'adresse ip à partir de cette site
Ici est kotlin version de @Nilesh et @anargund
dans Kotlin, sans Formateur
Dans votre activité, la fonction suivante
getIpAddress(context)
renvoie l'adresse IP du téléphone:Veuillez vérifier ce code...à l'Aide de ce code. nous allons obtenir une adresse ip à partir de l'internet mobile...
Je ne fais pas Android, mais j'aimerais aborder ce de manière totalement différente.
Envoyer 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 à la page HTML champ où la réponse est posté. Vous pouvez également interroger directement à la source.
Google plus comme être là depuis plus longtemps que votre Demande.
Rappelez-vous, il se pourrait que votre utilisateur n'a pas internet en ce moment, que voulez-vous arriver !
Bonne Chance
Vous pouvez le faire
Après ce que j'ai testé c'est ma proposition