перезагрузка webView на пользовательскую страницу ошибки вместо домашней страницы - PullRequest
0 голосов
/ 13 июля 2020

В настоящее время я работаю над веб-приложением.

Я создал пользовательскую страницу с ошибкой inte rnet, переопределив страницу No inte rnet connection по умолчанию. Код работает нормально, после восстановления соединения inte rnet webView загружает домашнюю страницу, но

Проблемы: после загрузки домашней страницы, если я нажимаю кнопку «Назад», приложение снова показывает настраиваемую страницу Inte rnet Error.

код webView: -

'' '

    private void webview() {
    progressBar = findViewById(R.id.progressBar);
    wv1 = (WebView) findViewById(R.id.webView);

    wv1.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
    wv1.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
    wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    wv1.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
    wv1.getSettings().setAppCacheEnabled(true);
    wv1.getSettings().setSaveFormData(true);
    wv1.clearCache(false);

    wv1.getSettings().setJavaScriptEnabled(true);
    wv1.getSettings().setDomStorageEnabled(true);
    wv1.getSettings().setDatabaseEnabled(true);
    wv1.getSettings().setAllowFileAccess(true);
    wv1.getSettings().setAllowContentAccess(true);
    wv1.getSettings().setUseWideViewPort(true);
    wv1.getSettings().setLoadWithOverviewMode(true);

    wv1.getSettings().setMinimumFontSize(1);
    wv1.getSettings().setMinimumLogicalFontSize(1);
    wv1.setInitialScale(1);

    wv1.setWebViewClient(new WebViewClient(){

        @Override
        public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
            if (!isNetworkConnected()){
                loadCustomUrl();
            }else {
                super.onReceivedError(view, request, error);
            }
        }

        @Override
        public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
            handler.proceed();
        }
    });

    wv1.setWebChromeClient(new WebChromeClient(){

        @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
        public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
        {
            if (uploadMessage != null) {
                uploadMessage.onReceiveValue(null);
                uploadMessage = null;
            }

            uploadMessage = filePathCallback;

            Intent intent = fileChooserParams.createIntent();
            try
            {
                startActivityForResult(intent, 100);
            } catch (ActivityNotFoundException e)
            {
                uploadMessage = null;
                Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
                return false;
            }
            return true;
        }
    });
    loadHomeUrl();

}'''

Переопределение метода onBackPressed: -

' ''

    @Override
    public void onBackPressed() {
    if (wv1.canGoBack()) {
        wv1.goBack();
    } else {
        if (doubleBackToExitPressedOnce) {
            super.onBackPressed();
            return;
        }

        this.doubleBackToExitPressedOnce = true;
        Toast.makeText(this, "press BACK again to exit", Toast.LENGTH_SHORT).show();

        new Handler().postDelayed(new Runnable() {

            @Override
            public void run() {
                doubleBackToExitPressedOnce = false;
            }
        }, 2000);
    }
}'''
...