Android WiFi “du net.nom d'hôte” à partir du code
Lorsqu'un appareil Android connecté à un wifi AP, il s'identifie lui-même avec un nom comme:
android_cc1dec12345e6054
Comment peut-string être obtenus à partir de l'intérieur d'une application Android? Pas dans le but de le changer, juste pour la lecture.
EDIT:
C'est une capture d'écran de mon interface web du routeur, montrant une liste de tous les appareils connectés. Notez les deux appareils Android sur la liste -- Comment cette chaîne de lire à partir du code Java en cours d'exécution sur l'appareil?
Ne pas essayer d'obtenir le SSID du routeur-en Essayant d'obtenir de l'appareil android, le nom d'hôte de la chaîne, qui de toute façon il fournit au routeur.
OriginalL'auteur TheGraeme | 2014-02-20
Vous devez vous connecter pour publier un commentaire.
Construction de @Merlevede réponse, voici une façon rapide et sale pour obtenir la propriété. C'est une API privée, de sorte qu'il est sujet au changement, mais ce code n'a pas été modifié depuis au moins Android 1.5, donc il est probablement plus sûr à utiliser.
Étrange. Je suis sur un Nexus 5 de course 4.4.2, donc il ne devrait pas être différent. Pouvez-vous essayer avec le fichier modifier? (
setAccessible(true)
)Oui, ça c'est fait! Merci pour votre aide.
Juste pour les autres Android newbie - la classe
Method
estjava.lang.reflect.Method
et la classeBuild
estandroid.os.Build
.Cela ne fonctionne pas dans Android O -
Querying the net.hostname system property produces a null result.
- Ref: developer.android.com/preview/behavior-changes.htmlOriginalL'auteur kcoppock
Utiliser le NetworkInterface objet d'énumérer les interfaces et obtenir la forme canonique nom d'hôte à partir de l'interface
InetAddress
. Puisque vous voulez le wifi nom, comme un raccourci, vous pouvez faire une requête pourwlan0
directement et si cela échoue, vous pouvez les énumérer tous comme ça:Qui vous donnera une sortie comme celle-ci:
Astuce: si
InetAddress.getCanonicalHostName().equals(InetAddress.getHostAddress())
vous pouvez l'ignorer comme il n'est pas un "vrai" nom.OriginalL'auteur ralfoide
Je ne sais pas si cela aide, mais j'y vais.
À partir d'un shell unix (vous pouvez télécharger n'importe quel Terminal de l'app sur Google Play), vous pouvez obtenir le nom d'hôte en tapant
Bien sûr, ce n'est pas ce que vous voulez... mais... d'un autre côté, ici des renseignements sur la façon d'exécuter une commande unix à partir de java. Peut-être par la combinaison de ces deux, vous obtenez ce que vous cherchez.
Sweet!
OriginalL'auteur Merlevede
Pour
java
:vous pouvez obtenir la propriété ci-dessous:
OriginalL'auteur Summer
J'ai utilisé jiangze ren la réponse et l'a modifié.
Maintenant vous pouvez obtenir le nom d'hôte par l'obtention de l'adresse IP de l'appareil:
OriginalL'auteur Sonik Mkrtumyan
Essayez ceci:
Error
OriginalL'auteur Sanket
vous pouvez utiliser le code ci-dessous:
Et en fait, vous pouvez plus d'informations à l'aide de cette fonction.
comme...
d'autres dispositifs de nom d'hôte qui sont dans le même réseau.
tout cela va revenir est
localhost
trop.OriginalL'auteur jiangze ren