Можно ли получить IP-адрес устройства, используя некоторый код?
android
ip-address
Нилеш Тупе
источник
источник
Ответы:
Это мой помощник для чтения IP и MAC-адресов. Реализация - чисто Java, но у меня есть блок комментариев, в
getMACAddress()
котором можно прочитать значение из специального файла Linux (Android). Я запускал этот код только на нескольких устройствах и в эмуляторе, но дайте мне знать, если найдете странные результаты.Utils.java
источник
toUpperCase()
. ПойматьException
всегда хитроумно (и вспомогательные методы должны все равно генерировать и позволить вызывающей стороне иметь дело с Исключением - хотя это и не исправлялось). Форматирование: должно быть не более 80 строк. Условное выполнениеgetHardwareAddress()
- патч: github.com/Utumno/AndroidHelpers/commit/… . Что ты сказал ?Это сработало для меня:
источник
getHostAddress()
, который поддерживает адреса IPv4 и IPv6. Этот метод не поддерживает адреса IPv6.Я использовал следующий код: причина, по которой я использовал hashCode, была в том, что я получал некоторые значения мусора, добавленные к IP-адресу при использовании
getHostAddress
. НоhashCode
для меня это сработало очень хорошо, так как тогда я могу использовать Formatter для получения IP-адреса с правильным форматированием.Вот пример вывода:
1.Using
getHostAddress
:***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2.Using
hashCode
иFormatter
:***** IP=238.194.77.212
Как видите, 2-й метод дает мне именно то, что мне нужно.
источник
getHostAddress()
будет делать то же самое, что и добавленный вами форматировщик.Я добавил
inetAddress
instanceof,Inet4Address
чтобы проверить, является ли это адресом ipv4.источник
Хотя есть правильный ответ, я делюсь своим ответом здесь и надеюсь, что таким образом будет больше удобства.
источник
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
Ниже код может помочь вам .. Не забудьте добавить разрешения ..
Добавьте ниже разрешение в файле манифеста.
счастливого кодирования !!
источник
Вам не нужно добавлять разрешения, как в случае с решениями, предоставленными до сих пор. Загрузите этот сайт в виде строки:
http://www.ip-api.com/json
или
http://www.telize.com/geoip
Загрузка сайта в виде строки может быть выполнена с помощью кода Java:
http://www.itcuties.com/java/read-url-to-string/
Разобрать объект JSON следующим образом:
https://stackoverflow.com/a/18998203/1987258
Атрибут json «query» или «ip» содержит IP-адрес.
источник
источник
Метод getDeviceIpAddress возвращает IP-адрес устройства и предпочитает адрес интерфейса Wi-Fi, если он подключен.
источник
Это переделка этого ответа которая удаляет ненужную информацию, добавляет полезные комментарии, более четко называет переменные и улучшает логику.
Не забудьте включить следующие разрешения:
InternetHelper.java:
источник
минималистская версия kotlin
источник
источник
Просто используйте Volley, чтобы получить IP с этого сайта
источник
В последнее время IP-адрес по-прежнему возвращается,
getLocalIpAddress()
несмотря на то, что он отключен от сети (индикатор обслуживания отсутствует). Это означает, что IP-адрес, отображаемый в меню «Настройки»> «О телефоне»> «Состояние», отличается от того, что думает приложение.Я реализовал обходной путь, добавив этот код раньше:
Это звонит кому-нибудь?
источник
в котлине, без форматтера
источник
В вашей деятельности следующая функция
getIpAddress(context)
возвращает IP-адрес телефона:источник
Вот котлин версия @Nilesh и @anargund
источник
Устройство может иметь несколько IP-адресов, и тот, который используется в конкретном приложении, может не совпадать с IP-адресом, который увидят серверы, получающие запрос. Действительно, некоторые пользователи используют VPN или прокси, такие как Cloudflare Warp .
Если ваша цель состоит в том, чтобы получить IP-адрес, указанный серверами, которые получают запросы от вашего устройства, то лучше всего запросить службу геолокации IP, такую как Ipregistry (заявление об отказе: я работаю в компании), с ее клиентом Java:
https://github.com/ipregistry/ipregistry-java
В дополнение к простоте использования вы получаете дополнительную информацию, такую как страна, язык, валюта, часовой пояс для IP-адреса устройства, и вы можете определить, использует ли пользователь прокси-сервер.
источник
Это самый простой и простой способ, который когда-либо существовал в Интернете ... Прежде всего, добавьте это разрешение в свой файл манифеста ...
«ИНТЕРНЕТ»
"ACCESS_NETWORK_STATE"
добавьте это в onCreate файл Activity ..
Теперь добавьте эту функцию в свой MainActivity.class.
источник
Если у вас есть раковина; ifconfig eth0 работал и для устройства x86
источник
Пожалуйста, проверьте этот код ... Используя этот код. мы получим IP с мобильного интернета ...
источник
Я не использую Android, но я бы решил это совершенно по-другому.
Отправьте запрос в Google, например, https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=my%20ip.
И обратитесь к полю HTML, где размещен ответ. Вы также можете запросить напрямую к источнику.
Google, скорее всего, будет там дольше, чем ваше приложение.
Просто помните, что у вашего пользователя в настоящее время нет интернета, что бы вы хотели сделать!
Удачи
источник
Ты можешь сделать это
источник
источник
Честно говоря, я немного знаком с безопасностью кода, так что это может быть взломом. Но для меня это самый универсальный способ сделать это:
источник
Компиляция некоторых идей, чтобы получить Wi-Fi IP от
WifiManager
более приятного решения kotlin:В качестве альтернативы вы можете получить IP-адреса петлевых устройств ip4 через
NetworkInterface
:источник
На основании того, что я проверил, это мое предложение
источник