【问题标题】:webView reloading to custom error page instead of home pagewebView重新加载到自定义错误页面而不是主页
【发布时间】:2020-11-02 13:01:54
【问题描述】:

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

我通过覆盖默认的没有互联网连接页面制作了一个自定义的互联网错误页面。代码工作正常,互联网连接恢复后 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);
    }
}'''

【问题讨论】:

    标签: android webview onbackpressed custom-pages


    【解决方案1】:

    我解决了我的问题:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-06
      • 1970-01-01
      • 2021-10-26
      • 2011-04-20
      • 2015-11-16
      • 1970-01-01
      • 1970-01-01
      • 2011-11-19
      相关资源
      最近更新 更多