0

我目前正在开发一个网络应用程序。

我通过覆盖默认的无互联网连接页面制作了一个自定义互联网错误页面。该代码工作正常,在互联网连接恢复后 webView 加载主页但是,

问题:如果我按返回按钮加载主页后,应用程序再次显示自定义 Internet 错误页面。

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);
    }
}'''
4

1 回答 1

0

我解决了我的问题:

我制作了另一个布局,而不是创建一个 HTML 文件并将其加载到 webView 中。因此,现在每当我的函数确认失去互联网连接时,我只需将自定义错误布局的可见性设置为 VISIBLE。

于 2020-09-08T09:12:00.080 回答