Verificar conexão de internet no Android

Neste post vou mostrar uma forma simples de verificar se o Android possui conexão, se esta conectando ou de qual forma esta conectado.

Wolmir Cezer Garbin por Wolmir Cezer Garbin - - Android - TUTORIAL

Última atualização em: | 13734 Visualizações

O primeiro passo é adicionar as permissões necessárias no arquivo AndroidManifest.xml.

Para isso adicione as duas permissões:

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

O arquivo deve ficar parecido com o abaixo:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="br.com.garbosoftware.app">

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

    <application
	[...]

Logo após, já pode utilizar os métodos necessários para realizar os testes.



Verificando se esta conectado

Agora precisa obter a instância ConnectivityManager do contexto de sua aplicação (activity ou fragment).

Logo após, criamos uma instância de NetworkInfo para obter a informação que precisamos da conexão com a internet no Android.

ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

if ( cm != null ) {
 NetworkInfo ni = cm.getActiveNetworkInfo();

 return ni != null && ni.isConnected();
}

Note que o objeto cm pode ser nulo, por este motivo adicionamos uma verificação para evitar exceções.

Você ainda pode criar um método utilitário que verifica se está conectado. Isso facilita o reuso do código em sua aplicação.

public static boolean isConnected(Context context) {
 ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);

 if ( cm != null ) {
  NetworkInfo ni = cm.getActiveNetworkInfo();

  return ni != null && ni.isConnected();
 }

 return false;
}

Ainda é possível verificar se o aparelho possui internet usando Wifi ou Dados móveis, conforme o código a seguir:

public static boolean isConnected(Context cont){
 ConnectivityManager conmag = (ConnectivityManager)cont.getSystemService(Context.CONNECTIVITY_SERVICE);

 if ( conmag != null ) {
  conmag.getActiveNetworkInfo();

  //Verifica internet pela WIFI
  if (conmag.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnected()) {
   return true;
  }

  //Verifica se tem internet móvel
  if (conmag.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnected()) {
   return true;
  }
 }

 return false;
}

Ainda existem outras informações que pode obter da sua conexão, mas não serão tratadas neste post.

Não esqueca de deixar suas dúvidas nos comentários e compartilhar este post.


Publique seu post no Receitas de Código

Aguarde, estamos trabalhando para que você possa publicar sua postagem no Receitas de Código!