É possível obter o endereço IP do dispositivo usando algum código?
android
ip-address
Nilesh Tupe
fonte
fonte
Respostas:
Este é o meu utilitário auxiliar para ler endereços IP e MAC. A implementação é java pura, mas eu tenho um bloco de comentários no
getMACAddress()
qual pode ler o valor do arquivo Linux (Android) especial. Eu executei esse código apenas em alguns dispositivos e emulador, mas deixe-me saber aqui se você encontrar resultados estranhos.Utils.java
fonte
toUpperCase()
. A capturaException
é sempre desonesta (e os métodos auxiliares devem ser lançados de qualquer maneira e deixar o chamador lidar com a exceção - embora isso não tenha sido alterado). Formatação: não deve ter mais que 80 linhas. Execução condicional paragetHardwareAddress()
- patch: github.com/Utumno/AndroidHelpers/commit/… . O que você diz ?Isso funcionou para mim:
fonte
getHostAddress()
, que suporta endereços IPv4 e IPv6. Este método não suporta endereços IPv6.Eu usei o seguinte código: O motivo pelo qual eu usei o hashCode foi porque eu estava recebendo alguns valores de lixo anexados ao endereço IP quando eu usei
getHostAddress
. MashashCode
funcionou muito bem para mim, pois posso usar o Formatador para obter o endereço IP com a formatação correta.Aqui está o exemplo de saída:
1. usando
getHostAddress
:***** IP=fe80::65ca:a13d:ea5a:233d%rmnet_sdio0
2.usando
hashCode
eFormatter
:***** IP=238.194.77.212
Como você pode ver, os métodos 2 me dão exatamente o que eu preciso.
fonte
getHostAddress()
fará o mesmo que o material do formatador que você adicionou.Adicionei
inetAddress
instanceofInet4Address
para verificar se é um endereço ipv4.fonte
Embora exista uma resposta correta, compartilho minha resposta aqui e espero que dessa maneira seja mais conveniente.
fonte
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
O código abaixo pode ajudá-lo. Não se esqueça de adicionar permissões.
Adicione abaixo a permissão no arquivo de manifesto.
feliz codificação !!
fonte
Você não precisa adicionar permissões, como é o caso das soluções fornecidas até o momento. Faça o download deste site como uma string:
http://www.ip-api.com/json
ou
http://www.telize.com/geoip
O download de um site como uma string pode ser feito com o código java:
http://www.itcuties.com/java/read-url-to-string/
Analise o objeto JSON assim:
https://stackoverflow.com/a/18998203/1987258
O atributo json "query" ou "ip" contém o endereço IP.
fonte
fonte
O método getDeviceIpAddress retorna o endereço IP do dispositivo e prefere o endereço da interface wifi, se estiver conectado.
fonte
Este é um retrabalho desta resposta que retira informações irrelevantes, adiciona comentários úteis, nomeia variáveis mais claramente e aprimora a lógica.
Não se esqueça de incluir as seguintes permissões:
InternetHelper.java:
fonte
versão minimalista do kotlin
fonte
fonte
Basta usar o Volley para obter o ip deste site
fonte
Recentemente, um endereço IP ainda é retornado por
getLocalIpAddress()
apesar de desconectado da rede (nenhum indicador de serviço). Isso significa que o endereço IP exibido em Configurações> Sobre o telefone> Status foi diferente do que o aplicativo pensava.Eu implementei uma solução alternativa adicionando este código antes:
Isso soa um sino para alguém?
fonte
no Kotlin, sem formatador
fonte
Na sua atividade, a seguinte função
getIpAddress(context)
retorna o endereço IP do telefone:fonte
Aqui está a versão kotlin de @Nilesh e @anargund
fonte
Um dispositivo pode ter vários endereços IP, e aquele em uso em um aplicativo específico pode não ser o IP que os servidores que recebem a solicitação verão. De fato, alguns usuários usam uma VPN ou proxy como o Cloudflare Warp .
Se o seu objetivo é obter o endereço IP conforme mostrado pelos servidores que recebem solicitações do seu dispositivo, o melhor é consultar um serviço de geolocalização IP, como o Ipregistry (aviso: trabalho para a empresa) com seu cliente Java:
https://github.com/ipregistry/ipregistry-java
Além de ser realmente simples de usar, você obtém informações adicionais como país, idioma, moeda, fuso horário do IP do dispositivo e pode identificar se o usuário está usando um proxy.
fonte
Essa é a maneira mais fácil e simples que existe na Internet ... Antes de tudo, adicione essa permissão ao seu arquivo de manifesto ...
"INTERNET"
"ACCESS_NETWORK_STATE"
adicione isso no arquivo onCreate de Activity ..
Agora adicione esta função à sua MainActivity.class.
fonte
Se você tem uma concha; O ifconfig eth0 também funcionou no dispositivo x86
fonte
Por favor, verifique este código ... Usando este código. obteremos ip da internet móvel ...
fonte
Eu não faço o Android, mas lidaria com isso de uma maneira totalmente diferente.
Envie uma consulta ao Google, algo como: https://www.google.com/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=my%20ip
E consulte o campo HTML onde a resposta é postada. Você também pode consultar diretamente a fonte.
O Google provavelmente estará lá por mais tempo que o seu Aplicativo.
Lembre-se, pode ser que seu usuário não tenha internet no momento, o que você gostaria que acontecesse!
Boa sorte
fonte
Você consegue fazer isso
fonte
fonte
Com toda a honestidade, eu estou um pouco familiarizado com a segurança do código, então isso pode ser um hack-ish. Mas, para mim, esta é a maneira mais versátil de fazer isso:
fonte
Compilando algumas das idéias para obter o ip wifi da
WifiManager
solução kotlin mais agradável:Como alternativa, você pode obter os endereços IP dos dispositivos de loopback IP4 através do
NetworkInterface
:fonte
Com base no que testei, esta é a minha proposta
fonte