Подтвердить что ты не робот

Как получить IP-адрес сотовой сети, когда устройство подключено к Wi-Fi в Android

Есть ли способ, по которому я могу одновременно получать IP-адрес как WiFi, так и сотовой сети в Android. Я попытался использовать множество примеров, но смог получить адрес только сети WiFi, а не сотовой сети. Я включил как WiFi, так и сотовая сеть и устройство имеют доступ в Интернет через WiFi.

Вот код, который я использую для получения 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) {

    }

Можно ли получить IP-адрес сотовой сети, когда устройство подключено к WiFi. Если да, то как это возможно.

4b9b3361

Ответ 1

Всякий раз, когда вы включаете WiFi на своем устройстве и имеете активное подключение к сети WiFi, ваши мобильные данные временно отключены, независимо от того, включена ли она вручную или нет. Параметр "Включение/выключение мобильных данных" учитывается только в том случае, если у вас нет активного соединения WiFi.

Некоторые пользовательские ПЗУ имеют возможность сохранить мобильное соединение живым при подключении к WiFi (поэтому, если вы потеряете соединение WiFi, он быстрее переключится на мобильный), но все же используется соединение WiFi.

Вывод: Вы не можете получить оба IP-адреса, так как у вас не может быть WiFi и мобильной сети (и если вы можете, вы активно используете WiFi)

Ответ 2

попробуйте, это может быть полезно...

Для мобильного IP-адреса.....

 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 "";
    }

Для IP-адреса Wifi....

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

включить это разрешение в свой манифест....

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

используйте как этот....

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

вы получаете Output вроде этого......

o

По возможности дубликат Как получить IP-адрес устройства

Ответ 3

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

Ответ 4

В вашем Java-коде используйте следующее:

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

Не забудьте добавить это разрешение в свой файл манифеста Android:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

Источник: Получите мой IP-адрес WiFi для Android

Надеюсь, это поможет! Удачи!

Ответ 5

Вы не получите IP для сотового соединения, когда ваш Wi-Fi включен и подключен. Это потому, что система не использует сотовую передачу данных для экономии заряда батареи. Хотя вы можете одновременно включить оба из них, система будет использовать только по одному. Это похоже: оба разрешены, но используется только один.

Есть только один пример, о котором я могу думать: когда вы подключаетесь через Wi-Fi к сети без доступа в Интернет, ваш телефон также будет подключаться через сотовую связь.