public static boolean VerificaConexao(Context contexto){
ConnectivityManager cm = (ConnectivityManager) contexto.getSystemService(Context.CONNECTIVITY_SERVICE);//Pego a conectividade do contexto o qual o metodo foi chamado
NetworkInfo netInfo = cm.getActiveNetworkInfo();//Crio o objeto netInfo que recebe as informacoes da NEtwork
System.out.println("NETWORK INFO: "+netInfo.getSubtypeName());
if ( (netInfo != null) && (netInfo.isConnectedOrConnecting()) && (netInfo.isAvailable()) ) //Se o objeto for nulo ou nao tem conectividade retorna false
return true;
else
return false;
}
Pessoal em varios sites q procurei no google eles usam esse metodo para verificar conexão com a internet contudo tem um problema q encorntei foi q esse metodo só retorna TRUE!!
lcs.farias
O método getSystemService é da classe Activity, se você quiser usar este método fora de uma activity deve passar um objeto Context como parâmetro e utilizar context.getSystemService
Aproveitando o topico, alguem conhece alguma forma de fazer o android verificar se tem uma conexão via usb?
É que eu fiz um reverse tethering para pegar a conexão de internet do PC através do USB, mas o ConnectivityManager retorna false quando uso o metodo conectivtyManager.getActiveNetworkInfo().isConnected().
Alguem já passou por isso?
lucas93lange, entendi, mas mesmo assim não é a solução que preciso.
A simulação que estou fazendo é a seguinte: A rede WiFi não tem internet, e esse código nosso me retorna true, ou seja, o android está conectado em uma rede WiFi só que no roteado não tem internet, porque está retornando true? Como validar isso?
sei lá talvez tentar uma conexão a um site qualquer via http, chamando outro método dentro dessa função e caso der timeout é porque não tem conexão e então esse método de teste retorna false.
Se o acesso não tem internet então você tem que esperar o erro estourar (HostNotResolvedException (procure a correta) ou ConnectionTimeoutException) e exibir o erro depois da ação.