Android wifi получить ip адрес

как получить IP-адрес точки доступа Wi-Fi в Android?

Как говорится в заголовке. Я пытаюсь получить IP-адрес wifi iface, когда он настроен как точка доступа. В идеале я хотел бы найти что-то, что работает для всех телефонов. Конечно, WifiManager бесполезен, когда дело доходит до получения информации от AP. К счастью, я смог получить IP-адреса всех интерфейсов, выполнив следующие действия:

public String getLocalIpAddress() < try < for (Enumerationen = NetworkInterface.getNetworkInterfaces(); en.hasMoreElements();) < NetworkInterface intf = en.nextElement(); for (EnumerationenumIpAddr = 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; > 
  • Фильтрация с помощью отображаемого имени wifi iface: это не очень хороший подход, поскольку отображаемое имя изменяется с одного устройства на другое (wlan0, eth0, wl0.1 и т.д.).
  • Фильтрация по его MAC-адресу: почти работает, но на некоторых устройствах точка доступа iface не имеет MAC-адрес (iface.getHardwareAddress() возвращает null). поэтому недействительное решение.

6 ответов

Вот что я сделал, чтобы получить wifi hotspot ip:

public String getWifiApIpAddress() < try < for (Enumerationen = NetworkInterface.getNetworkInterfaces(); en .hasMoreElements();) < NetworkInterface intf = en.nextElement(); if (intf.getName().contains("wlan")) < for (EnumerationenumIpAddr = intf.getInetAddresses(); enumIpAddr .hasMoreElements();) < InetAddress inetAddress = enumIpAddr.nextElement(); if (!inetAddress.isLoopbackAddress() && (inetAddress.getAddress().length == 4)) < Log.d(TAG, inetAddress.getHostAddress()); return inetAddress.getHostAddress(); >> > > > catch (SocketException ex) < Log.e(TAG, ex.toString()); >return null; > 

Это даст вам IP-адрес устройства любого wifi, что означает его не только для точки доступа. Если вы подключены к другой сети Wi-Fi (что означает, что вы не находитесь в режиме «горячей точки» ), он вернет IP-адрес.

Сначала вы должны проверить, находитесь ли вы в режиме AP или нет. Вы можете использовать этот класс для этого: http://www.whitebyte.info/android/android-wifi-hotspot-manager-class

Привет @ajma, Спасибо за то, что поделились этим ценным кодом, это работает, и дайте мне IP-адрес как для «сети простого маршрутизатора WiFi», так и для «WiFi модема или точки доступа».

Это не на 100% правильно. Я обнаружил, что имя сетевого интерфейса сильно различается. HTC Desire Z: wl0.1; Prestigio 3540: ap0; Nexus 5 / Samsung DUOS: wlan0. С другой стороны, во всех случаях в списке было только одно устройство (без обратной связи и т. Д.).

этот код не работает на некоторых устройствах, где интерфейс называется ap0. Я предлагаю следующее исправление: if ((intf.getName (). содержит («wlan»)) || (intf.getName (). содержит («ap»)))

Читайте также:  При перезагрузке ноутбука отключается вай фай

Вы можете использовать это. Он не тестировался, но должен работать.

((WifiManager) mContext.getSystemService(Context.WIFI_SERVICE)).getDhcpInfo().serverAddress 

Я использую решение ajma, меняя intf.getName().contains(«wlan») на intf.getName().contains(«wl») || intf.getName().contains(«ap») . И он работает для многих мобильных телефонов.

Но он возвращает null, когда вы просто подключены к WiFi.

private static byte[] convert2Bytes(int hostAddress) < byte[] addressBytes = < (byte)(0xff & hostAddress), (byte)(0xff & (hostAddress >> 8)), (byte)(0xff & (hostAddress >> 16)), (byte)(0xff & (hostAddress >> 24)) >; return addressBytes; > public static String getApIpAddr(Context context) < WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE); DhcpInfo dhcpInfo = wifiManager.getDhcpInfo(); byte[] ipAddress = convert2Bytes(dhcpInfo.serverAddress); try < String apIpAddr = InetAddress.getByAddress(ipAddress).getHostAddress(); return apIpAddr; >catch (UnknownHostException e) < e.printStackTrace(); >return null; > 

Когда Wi-Fi не настроен как горячая точка, он имеет имя android-xx7632x324x32423 home когда горячая точка включена, это имя исчезло. Также изменяется IP-адрес.

Итак, если вы можете получить конфигурацию Wifi перед включением точки доступа, прежде всего, вы можете использовать intf.getName() , чтобы получить ссылку на нее.

Во-вторых, ip изменился, поэтому, если вы знаете, какой интерфейс Wi-Fi находится в режиме CONNECTED , вы можете использовать эту информацию, чтобы позже идентифицировать ее после включения точки доступа.

Ниже приведен код, который я использовал для отладки. Я просто выплю все, что могу найти, сделать огромный беспорядок, а затем очистить его, когда я понял, что проблема. GL

import java.net.InetAddress; import java.net.NetworkInterface; import java.util.Collections; import android.net.ConnectivityManager; textStatus = (TextView) findViewById(R.id.textStatus); try < for (NetworkInterface intf : Collections.list(NetworkInterface.getNetworkInterfaces())) < for (InetAddress addr : Collections.list(intf.getInetAddresses())) < if (!addr.isLoopbackAddress())< textStatus.append("\n\n IP Address: " + addr.getHostAddress() ); textStatus.append("\n" + addr.getHostName() ); textStatus.append("\n" + addr.getCanonicalHostName() ); textStatus.append("\n\n" + intf.toString() ); textStatus.append("\n\n" + intf.getName() ); textStatus.append("\n\n" + intf.isUp() ); >> > > catch (Exception ex) < textStatus.append("\n\n Error getting IP address: " + ex.getLocalizedMessage() ); >connectivity = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); allInfo = connectivity.getAllNetworkInfo(); mobileInfo = connectivity.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); textStatus.append("\n\n TypeName: " + mobileInfo.getTypeName()); textStatus.append("\n State: " + mobileInfo.getState()); textStatus.append("\n Subtype: " + mobileInfo.getSubtype()); textStatus.append("\n SubtypeName: " + mobileInfo.getSubtypeName()); textStatus.append("\n Type: " + mobileInfo.getType()); textStatus.append("\n ConnectedOrConnecting: " + mobileInfo.isConnectedOrConnecting()); textStatus.append("\n DetailedState: " + mobileInfo.getDetailedState()); textStatus.append("\n ExtraInfo: " + mobileInfo.getExtraInfo()); textStatus.append("\n Reason: " + mobileInfo.getReason()); textStatus.append("\n Failover: " + mobileInfo.isFailover()); textStatus.append("\n Roaming: " + mobileInfo.isRoaming()); textStatus.append("\n\n 0: " + allInfo[0].toString()); textStatus.append("\n\n 1: " + allInfo[1].toString()); textStatus.append("\n\n 2: " + allInfo[2].toString()); 

Источник

Как исправить бесконечное «Получение IP-адреса» Wi-Fi на Android-устройствах?

Ольга Короткова

Существует множество ошибок, которые возникают при подключении Android-устройства к Интернету, в частности, через Wi-Fi. Одна из самых распространенных — ошибка при «Получении IP-адреса». Данная проблема возникает при попытке пользователя подключиться к сети Wi-Fi посредством встроенного модуля беспроводного обмена данными. Android-устройство при этом сканирует ближайшие доступные подключения и предлагает пользователю список обнаруженных сетей для выбора. Как только конкретная сеть Wi-Fi выбрана, и пароль (при необходимости) введен, устройство пытается получить для себя IP-адрес в выбранной сети. Когда возникает какая-либо неполадка, получить IP-адрес в сети Wi-Fi устройство не может. В автоматическом режиме оно отключается от этой сети, подключается заново и еще раз пытается получить IP-адрес. И эти попытки не прекращаются.

Читайте также:  Wifi vlan on mac

Очень раздражает, когда ваш смартфон или планшет не может подключиться к сети через Wi-Fi. Следовательно, необходимо устранить эту ошибку, чтобы получить возможность продолжать общение, играть и черпать информацию из интернета. Существует множество способов, позволяющих исправить ошибку «Получения IP-адреса» в процессе подключения Android-устройства к сети через Wi-Fi. Часть из них связана с обращением к помощи сторонних приложений. Сразу скажем, именно эти методы срабатывают далеко не всегда — нужно выбрать «правильное» приложение именно для своей версии ОС и модели гаджета.

  • Самый элементарный вариант — неправильно введенный пароль от сети Wi-Fi (возможно, вместо заглавной буквы вписана строчная, пропущен один из символов, или введена неверная цифра). Имейте в виду: пароли чувствительны к регистру. Рекомендуется тщательно проверить пароль, прежде жать на «Ввод». Это сэкономит ваше время и нервы.
  • Одной из причин может быть маршрутизатор Wi-Fi. Если ваш Wi-Fi-маршрутизатор не может назначить соответствующий IP-адрес вашему устройству, вы можете столкнуться с получением ошибки IP-адреса в Android.
  • Проблема может возникнуть из-за плохого покрытия сети Wi-Fi, а также из-за конфликтов IP-адресов с другими устройствами, подключенными к этой же сети.
  • Ошибка при получении IP-адреса также может возникнуть из-за мер безопасности сети.
  • И, наконец, недавно выяснилось, что ошибка «Получения IP-адреса» при подключении Android-устройства к сети Wi-Fi иногда является следствием попытки вашего гаджета автоматически получить IP-адрес. У мобильного телефона включен динамический IP-адрес — DHCP, и возникает замкнутый круг: Android-устройство пытается подключиться, но не может. И так будет продолжаться, пока что-то не будет сделано для исправления ошибки.

Как исправить ошибку при получении IP-адреса Wi-Fi?

Очень просто исправить получение ошибки IP-адреса WiFi на Android-устройствах. Исправление проблемы с IP-адресом зависит от версии операционной системы Вашего устройства. Ниже мы разместили основные способы решения данной проблемы: от простых до более сложных.

Решение 1. Переподключитесь к сети Wi-Fi

Решение 2. Переименуйте свое устройство

Возможная причина: Редкий сбой на устройствах HTC. Перейдите в настройки Wi-Fi Direct (Wi-Fi —> Расширенные настройки) и переименуйте свое устройство. Вы должны изменить имя «android_909892» на любое простое слово на английском языке, например «HTC 10».

Решение 3. Загрузите и установите приложение FXR WiFi fix

Многие пользователи сообщают, что приложение FXR WiFi fix решило проблему бесконечного получения IP-адреса. Вы также можете попробовать установить данное приложение из Google Play Маркета .

Решение 4. Отключите постоянный поиск сетей

Решение 5. Назначьте статический IP-адрес

Теперь вы можете легко подключиться к ближайшей сети Wi-Fi, если у вас есть пароль. Но если предлагаемый нами способ не сработал, Вы можете попробовать использовать сторонние приложения для решения данной проблемы (они в изобилии представлены на Маркете). Подберите одно из них, подходящее для вашего устройства и версии ОС Android, и исправьте ошибку получения IP-адреса.

Читайте также:  Публичные зоны wi fi

Если у вас есть какие-либо вопросы, задавайте их в комментариях ниже.

Источник

Как узнать IP-адрес роутера с Android телефона. IP шлюза

IP-адрес роутера с Android

IP-адрес роутера может вам понадобиться в самых различных случаях. Например, если вы хотите зайти в настройки роутера или прописать статический IP-адрес на Android. В сетевых параметрах IP-адрес роутера очень часто называется обобщенно: адрес шлюза, т.к. шлюзом в принципе могут быть еще и такие сетевые устройства как модем, точка доступа, сервер, любой компьютер или оборудование на стороне провайдера. В этой статье вы найдете всевозможные способы узнать IP-адрес роутера с Android телефона или планшета.

Как узнать IP-адрес роутера с Android телефона (планшета)

  1. Зайдите в Настройки Wi-Fi. Как правило, на многих телефонах с Android это можно сделать, если потянуть шторку и выполнить долгое нажатие по значку Wi-Fi: Wi-Fi в шторке
    Если так не получается, то зайти в настройки беспроводной сети можно стандартным способом:
    Откройте приложение Настройки:
    Настройки Android 8Выберите Сеть и Интернет или аналогичный раздел: Сеть и Интернет Android 8Затем убедитесь, что беспроводной модуль включен и выберите раздел Wi-Fi: Настройки Wi-Fi Android 8
  2. Подключитесь к сети, в которой вы хотите узнать IP-адрес роутера.
  3. После подключения нажмите еще раз по имени этой сети. Оно должно находиться в самом верху списка, отделенное от других чертой: Информация о Wi-Fi сети Android 8Откроются сведения о подключении. В подробностях сети вы найдете поле Шлюз и напротив него будет IP-адрес. Это и есть IP-адрес роутера: как узнать IP-адрес роутера с Android телефона

Узнаем IP-адрес роутера в Android-приложении Wi-Fi Analyzer

Ранее мы писали о таком полезном приложении для Android как Wi-Fi Analyzer. В статье по указанной ссылке описано, как установить приложение на ваше устройство. Для того, чтобы узнать IP-адрес роутера, выполните такие действия:

  1. Подключитесь к нужной беспроводной сети на вашем Андроиде.
  2. Запустите Wi-Fi Анализатор.
  3. При помощи свайпа влево или с помощью иконки перейдите в режим просмотра Список AP:Wifi Analyzer: Вид - Список AP
  4. Нажмите на строку Подключение к: Wifi Analyzer подключение к
  5. Сервер IP — это и есть IP-адрес роутера: IP-адрес роутера WiFi Analyzer

Теперь вы можете запустить браузер на Android, ввести IP-адрес шлюза в браузерной строке в виде http://192.168.0.1 , нажать ввод и после этого вы должны увидеть настройки роутера с предложением ввести имя пользователя и пароль.

Как изменить IP-адрес роутера на телефоне с Android

Для того, чтобы прописать другой IP-адрес роутера и таким образом изменить шлюз для выхода в Интернет с Android-устройства, выполните следующие шаги:

  1. Зайдите в настройки Wi-Fi (описано выше).
  2. Убедитесь, что вы подключены к нужной беспроводной сети.
  3. Выполните долгое нажатие по имени Wi-Fi сети в списке.
  4. Выберите Изменить сеть: изменить сеть Android Wi-Fi
  5. Нажмите Расширенные настройки.
  6. Прокрутите окно вниз и в поле Настройки IP выберите Пользовательские:
  7. Задайте IP для самого Android устройства, затем укажите нужный IP-адрес шлюза (роутера).
  8. Нажмите Сохранить: изменить IP-адрес роутера Android 8

Читайте также: Как прописать статический IP на Android 4.
Если остались вопросы, задавайте их в комментариях.

Источник

Оцените статью
Adblock
detector