comment obtenir l'IP du hotspot wifi dans Android?
Comme le dit le titre... je vais essayer d'être en mesure d'obtenir l'adresse IP de la connexion wifi iface lorsqu'il est configuré en tant que point d'accès. Idéalement, j'aimerais trouver quelque chose qui fonctionne pour tous les téléphones.
Bien sûr, la WifiManager est inutile quand il s'agit d'obtenir des informations à partir de l'AP.
Heureusement, j'ai été en mesure d'obtenir les adresses ip de toutes les interfaces en faisant ceci:
public String getLocalIpAddress() {
try {
for (Enumeration<NetworkInterface> en = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) {
NetworkInterface intf = en.nextElement();
for (Enumeration<InetAddress> enumIpAddr = intf.getInetAddresses(); enumIpAddr.hasMoreElements();) {
InetAddress inetAddress = enumIpAddr.nextElement();
if (!inetAddress.isLoopbackAddress()) {
Log.d("IPs", inetAddress.getHostAddress() );
}
}
}
} catch (SocketException ex) {
Log.e(LOG_TAG, ex.toString());
}
return null;
}
Ce bout de code permet d'imprimer tous les IP de toutes les interfaces (hotspot Wifi inclus). Le principal problème est que je n'ai pas trouver un moyen d'identifier l'interface WiFi. C'est un problème, puisque certains téléphones ont de multiples interfaces (WiMax, etc). C'est ce que j'ai essayé jusqu'à présent:
- Filtrage par le wifi iface nom d'affichage de: ce n'est pas une bonne approche, car les changements de nom d'affichage d'un dispositif à l'autre (wlan0, eth0, wl0.1, etc).
- Filtrage par son adresse mac: près de travail, mais sur certains appareils le hotspot iface ne dispose pas d'une adresse MAC ( iface.getHardwareAddress() renvoie null)...donc pas une solution valable.
Des suggestions?
source d'informationauteur sirlion
Vous devez vous connecter pour publier un commentaire.
Voici ce que j'ai fait pour obtenir le hotspot wifi ip:
Cela vous donnera l'adresse IP de tout appareil wifi, ce qui signifie qu'il n'est pas juste pour le hotspot. Si vous êtes connecté à un réseau wifi (ce qui signifie que vous n'êtes pas en mode hotspot), il va renvoyer une adresse IP.
Vous devriez vérifier si vous êtes en mode AP premier ou non. Vous pouvez utiliser cette classe pour que: http://www.whitebyte.info/android/android-wifi-hotspot-manager-class
Vous pouvez l'utiliser. Ce n'est pas testé mais ça devrait fonctionner.
Ici est possible solution qui utilise
WiFiManager
ConnectionInfo
pour trouver des correspondantesNetworkInterface
.Si vous avez juste besoin de la propriété intellectuelle, alors vous pouvez utiliser:
Lorsque le Wifi n'est pas configuré comme un hotspot, il a un nom
android-xx7632x324x32423
maisonlorsque hotspot est activé, le nom d'un disparu. Aussi les changements d'adresse ip.
Donc, si vous êtes en mesure d'obtenir le Wifi config avant d'activer le hotspot, tout d'abord, vous pouvez utiliser
intf.getName()
pour obtenir une référence à elle.Deuxième, l'ip a changé, donc si vous connaissez l'interface sur laquelle le wifi est en
CONNECTED
mode, vous pouvez utiliser ces informations pour identifier ultérieurement après l'activation de la connexion.Ci-dessous est un code que j'ai utilisé pour le débogage. Je viens de cracher tout ce que je peux trouver, faire une énorme pagaille puis nettoyer lorsque j'ai compris mon problème. GL
J'utilise la solution de ajma', l'évolution
intf.getName().contains("wlan")
àintf.getName().contains("wl") || intf.getName().contains("ap")
. Et il travaille pour de nombreux téléphones mobiles.Mais elle renvoie la valeur null lorsque vous juste connecté à un réseau WiFi.