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