Os dispositivos com sistema Android podem ter acesso à internet através do WiFi ou de uma rede móvel como por exemplo 3G. Em algumas aplicações é interessante verificar se o equipamento está conectado na internet, antes de executar alguma operação que necessita da conexão.
Fazer este tipo de verificação pode ser útil para informar o usuário que o equipamento está sem conexão à internet, antes de executar a tarefa que pode retornar um erro, ou demorar para responder devido à falta de conexão.
Para fazer esta verificação pode-se utilizar a classe
ConnectionManager,
que através do método getActiveNetworkInfo()
permite obter detalhes sobre a rede de dados ativa no momento.
O código abaixo exemplifica uma forma de verificar se o dispositivo está ou não conectado na internet através do método
existeConexao()
que retorna true
se existir algum tipo de conexão WiFi ou Mobile e false
se não existir conexão.import android.content.Context; import android.net.ConnectivityManager; import android.net.NetworkInfo; public class DetectaConexao { private Context _context; public DetectaConexao(Context context){ this._context = context; } public boolean existeConexao(){ ConnectivityManager connectivity = (ConnectivityManager) _context.getSystemService(Context.CONNECTIVITY_SERVICE); if (connectivity != null) { NetworkInfo netInfo = connectivity.getActiveNetworkInfo(); // Se não existe nenhum tipo de conexão retorna false if (netInfo == null) { return false; } int netType = netInfo.getType(); // Verifica se a conexão é do tipo WiFi ou Mobile e // retorna true se estiver conectado ou false em // caso contrário if (netType == ConnectivityManager.TYPE_WIFI || netType == ConnectivityManager.TYPE_MOBILE) { return netInfo.isConnected(); } else { return false; } }else{ return false; } } }
Para que seja possível verificar o estado da conexão do dispositivo Android, é necessário incluir a solicitação de permissão de acesso. A solicitação de permissão é apresentada ao usuário somente no momento da instalação da aplicação e deve ser inserida durante a programação no arquivo AndroidManifest.xml.
Para o caso de verificar o estado da rede inserir a seguinte tag no arquivo AndroidManifest.xml:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />