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.
Última atualização em: | 14746 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.