Как определить, когда теряет / прерванное соединение в Webview?

Я реализую Webview и хочу определить, когда теряется соединение или когда сеть прервана..(пример: когда устройство выходит из диапазона сети)

и возможность повторного подключения при восстановлении соединения.

Любой вклад будет оценен. Спасибо.

1 ответ

  1. Это похоже на дубликат этого поста . Но соответствующий блок кода находится ниже. Это способ поймать ошибку и соответствующим образом изменить пользовательский интерфейс.

           webView.setWebViewClient(new WebViewClient() {
    
            @Override
            public void onReceivedError(final WebView view, int errorCode, String description,
                    final String failingUrl) {
                //control you layout, show something like a retry button, and 
                //call view.loadUrl(failingUrl) to reload.
                super.onReceivedError(view, errorCode, description, failingUrl);
            }
        });
    

    Вы также можете слушать потери сетевого подключения по всему приложению с помощью широковещательного приемника. Вы можете найти хороший написать здесь . Но суть в том, что вы регистрируете приемник для изменения сети, затем вы проверяете, было ли изменение отключением. Затем можно использовать собственную шину событий для отправки широковещательной передачи, которая может обновить пользовательский интерфейс.

    public class NetworkChangeReceiver extends BroadcastReceiver {
    
    @Override
    public void onReceive(final Context context, final Intent intent) {
        final ConnectivityManager connMgr = (ConnectivityManager) context
                .getSystemService(Context.CONNECTIVITY_SERVICE);
    
        final android.net.NetworkInfo wifi = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_WIFI);
    
        final android.net.NetworkInfo mobile = connMgr
                .getNetworkInfo(ConnectivityManager.TYPE_MOBILE);
    
        if (wifi.isAvailable() || mobile.isAvailable()) {
            // Do something
    
            Log.d("Network Available ", "Flag No 1");
        }
      }
    } 
    

    А чек здесь:

    public boolean isOnline(Context context) {
    
        ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo netInfo = cm.getActiveNetworkInfo();
        //should check null because in air plan mode it will be null
        return (netInfo != null && netInfo.isConnected());
    }