Detectar cambios de conexión en Android

Detectar cambios de conexión en Android

Veremos cómo detectar cambios de conexión en Android en nuestros desarrollos de Apps, lo haremos implementando la interfaz BroadcastReceiver, con esto ahora podremos saber cuando el dispositivo se ha desconectado o se ha vuelto a conectar.

En muchas ocasiones nos interesa conocer los cambios en la conexión a Internet del dispositivo donde tenemos nuestra App.

En android esto lo podemos hacer extendiendo la clase BroadcastReceiver.

Actualmente estoy trabajando en una app que muestra un webview y me interesa que al perder y volver a conectar me recargue nuevamente la url.


¿Sabías que?

¿Necesitas aprender algo nuevo ? Ve a Udemy, busca el tema del que quieres aprender, selecciona el curso para ti y continua con tu aprendizaje.

Udemy

Así que si tienes un proyecto con requerimientos similares donde tengamos la necesidad de conocer los cambios de conexión a Internet sigue leyendo.

Lo primero es crear una nueva clase llamada NetworkChangeReceiver o como quieras nombrarla.

Extenderemos esta clase con BroadcastReceiver y la escribiremos así.

public class NetworkChangeReceiver extends BroadcastReceiver {

    ConnectionChangeCallback connectionChangeCallback;

    @Override
    public void onReceive(Context context, Intent intent) {

        ConnectivityManager cm = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo activeNetwork = cm.getActiveNetworkInfo();
        boolean isConnected = activeNetwork != null
                && activeNetwork.isConnectedOrConnecting();


        if (connectionChangeCallback != null) {
            connectionChangeCallback.onConnectionChange(isConnected);
        }

    }

    public void setConnectionChangeCallback(ConnectionChangeCallback
                                                    connectionChangeCallback) {
        this.connectionChangeCallback = connectionChangeCallback;
    }


    public interface ConnectionChangeCallback {

        void onConnectionChange(boolean isConnected);

    }


}

Dejamos de lado esta clase y nos pasamos a nuestra actividad que nos interesa.

Dentro de nuestro método oncreateview registramos nuestro receiver haciendo uso de la clase anteriormente creada.

// Registrar monitoreo de conexión
       IntentFilter intentFilter = new IntentFilter("android.net.conn.CONNECTIVITY_CHANGE");
       NetworkChangeReceiver networkChangeReceiver = new NetworkChangeReceiver();
       getActivity().registerReceiver(networkChangeReceiver, intentFilter);
       networkChangeReceiver.setConnectionChangeCallback(this);

Con esto ya quedará registrado el callback cuando exista un cambio de status en nuestra conexión.

Ahora haremos lo que queramos cuando tengamos conexión o cuando la perdamos mediante el método onConnectionChange().

@Override
    public void onConnectionChange(boolean isConnected) {
        if(isConnected){
            Toast.makeText(view.getContext(),"Conectado a Internet", Toast.LENGTH_SHORT).show();
            Wv.loadUrl(VideoURL);
        }
        else{
            Toast.makeText(view.getContext(),"No hay conexión", Toast.LENGTH_SHORT).show();
        }

    }

En mi caso lo utilizo para recargar la vista de un webview.

Tú puedes usar este método como a ti te convenga más.

Listo, ahora ya monitoreamos los cambios de conexión a Internet en Android.

Si esta información te ha sido de utilidad no olvides compartirla en tu red social favorita o dejarnos un comentario en la sección de abajo si tienes cualquier duda o comentario respecto con este tema, será un placer ayudarte.

¡Hasta luego!

Clic para valorar esta información
[Total: 2 Promedio: 5]