web-dev-qa-db-fra.com

Comment obtenir l'adresse IP du réseau cellulaire lorsque l'appareil est connecté au WiFi en Android

Y a-t-il un moyen par lequel je peux obtenir l'adresse IP du WiFi et du réseau cellulaire en Android simultanément. J'ai essayé d'utiliser de nombreux exemples mais j'ai pu obtenir l'adresse du réseau WiFi uniquement et non du réseau cellulaire. J'ai activé le WiFi et le réseau cellulaire et l'appareil a accès à Internet via le WiFi.

Voici le code que j'utilise pour obtenir l'adresse IP:

    String ipAddress = null;
    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()) {
                    ipAddress = inetAddress.getHostAddress().toString();
                    Log.i("Here is the Address",ipAddress);
                }
            }
        }
    } catch (SocketException ex) {

    }

Est-il possible d'obtenir l'adresse IP du réseau cellulaire lorsque l'appareil est connecté au WiFi.Si oui, comment est-ce possible?.

16
Asus gates

Chaque fois que vous activez le WiFi sur votre appareil ET que vous avez une connexion active à un réseau WiFi, vos données mobiles sont temporairement désactivées , peu importe si vous les avez activées manuellement ou pas. Le paramètre "Activation/désactivation des données mobiles" n'est pris en compte que si vous n'avez pas de connexion WiFi active.

Certaines ROM personnalisées ont une option pour maintenir la connexion mobile en vie lorsque vous vous connectez à un WiFi (donc au cas où vous perdriez votre connexion WiFi, elle passe au mobile plus rapidement), mais quand même, la connexion WiFi est utilisée.

Conclusion: Vous ne pouvez pas obtenir les deux adresses IP car vous ne pouvez pas avoir à la fois le WiFi et le réseau mobile (et si vous le pouvez, vous n'utilisez que le WiFi activement)

11
Aenadon

essayez cela peut être utile .....

Pour l'adresse IP mobile .....

 public static String getMobileIPAddress() {
        try {
            List<NetworkInterface> interfaces = Collections.list(NetworkInterface.getNetworkInterfaces());
            for (NetworkInterface intf : interfaces) {
                List<InetAddress> addrs = Collections.list(intf.getInetAddresses());
                for (InetAddress addr : addrs) {
                    if (!addr.isLoopbackAddress()) {
                        return  addr.getHostAddress();
                    }
                }
            }
        } catch (Exception ex) { } // for now eat exceptions
        return "";
    }

Pour l'adresse IP Wifi ....

  public String getWifiIPAddress() {
        WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
        WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
        int ip = wifiInfo.getIpAddress();
        return  Formatter.formatIpAddress(ip);
    }

inclure cette autorisation dans votre manifeste ....

<uses-permission Android:name="Android.permission.INTERNET" />
<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />

utiliser comme ça ....

String wifiIp = getWifiIPAddress(); 
String mobileIp = getMobileIPAddress();

vous obtenez une sortie comme celle-ci ......

o

Peut-être un doublon de Comment obtenir l'adresse IP de l'appareil

7
sushildlh

Utilisez ce qui suit dans votre code Java:

    WifiManager wifiMgr = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiMgr.getConnectionInfo();
int ip = wifiInfo.getIpAddress();
String ipAddress = Formatter.formatIpAddress(ip);

N'oubliez pas d'ajouter cette autorisation dans votre fichier Android Manifest:
<uses-permission Android:name="Android.permission.ACCESS_WIFI_STATE" />

Source: Obtenir l'adresse IP Wifi

J'espère que cela aide! Bonne chance!

3
Shreshth Kharbanda
WifiManager wm = (WifiManager) getSystemService(WIFI_SERVICE);
String ip = Formatter.formatIpAddress(wm.getConnectionInfo().getIpAddress());
3

Vous n'obtiendrez pas IP pour la connexion cellulaire lorsque votre wifi est activé et connecté. En effet, le système n'utilise pas de connexion de données cellulaires pour des raisons d'économie de batterie. Bien que vous puissiez les activer tous les deux en même temps, le système n'en utilisera qu'un à la fois. C'est comme: les deux sont autorisés, mais un seul est utilisé.

Il n'y a qu'un seul exemple auquel je peux penser: c'est lorsque vous êtes connecté via wifi à un réseau sans accès à Internet, alors votre téléphone se connectera également via cellulaire.

1
Raphau