Detectando conectividade de rede limitada no Android?
Há várias perguntas sobre como detectar a conectividade de rede no Android.https://stackoverflow.com/a/4239019/90236 fornece uma resposta muito detalhada ehttps://stackoverflow.com/a/8548926/90236 mostra métodos para identificar o tipo de rede a qual está conectado.
Detectamos conectividade de rede usando código semelhante às respostas como:
private boolean isNetworkAvailable() {
ConnectivityManager connectivityManager
= (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
Isso nos permite avisar um usuário se ele estiver off-line. No entanto, isso não nos ajuda a identificar se um usuário tem conectividade limitada. Existem condições de conectividade limitada que levaram os usuários a reclamar. Esses incluem:
Os usuários estão conectados a uma rede wifi doméstica, mas o modem a cabo ou o serviço de Internet não estão disponíveis.
Os usuários estão em um hotel ou coffee shop e se conectam com êxito a uma rede wifi, mas a rede exige que eles façam login ou concordem com os termos de serviço antes de receberem acesso total à rede.
Em ambas as situações, nosso teste isNetworkAvailable () retorna true. O sistema operacional nos diz que estamos conectados a uma rede. No entanto, o usuário não tem conectividade com a Internet utilizável.
Existe uma boa maneira de determinar se o usuário tem uma conexão de rede totalmente funcional?
Estou pensando em chamar um serviço da Web leve para verificar sua conectividade e avisar o usuário se o aplicativo não obtiver um retorno válido do serviço. Isso é um exagero? ou outros tiveram que recorrer a técnicas semelhantes?