4

嗨,我正在开发使用 web 视图的 android。我的网络视图里面有不止一个页面。所以我的预期功能是,当我按下设备后退按钮时,它应该返回到上一个网页 url,当它在最后一个网页上时,它应该关闭该活动并返回上一个活动。我以以下方式尝试了它,它在新设备上运行良好,但在旧的 android 版本上无法正常运行。我的代码如下所示:

     webView = new WebView(this);
        webView.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {

                if (url.contains(URLManager.URL_DICOM_BACK_PRESSED_URL)) {
                    processBackPressed();
                    return true;
                } else {
                    return super.shouldOverrideUrlLoading(view, url);
                }


            }


            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                if (failingUrl.contains(URLManager.URL_DICOM_BACK_PRESSED_URL)) {
                    processBackPressed();
                } else {
                    showError("Server unreachable");
                }

            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);

                runOnUiThread(new Thread() {
                    @Override
                    public void run() {
                        super.run();

                        if(!webviewLoaded) {
                            webviewLoaded = true;
                            content.removeAllViews();
                            content.setOrientation(LinearLayout.VERTICAL);
//                            LLM.addInParent(content, textView, -1001, -999, 0);
                            LLM.addInParent(content, webView, -1001, 0, 1);
                        }
                    }
                });
            }
        });
        webView.getSettings().setJavaScriptEnabled(true);
        webView.loadUrl(url);

    @Override
    public void onBackPressed() {
        if (webView != null && webView.canGoBack()) {

            webView.goBack();
        } else {

            processBackPressed();
        }
    }

    public void processBackPressed() {
        super.onBackPressed();
        finish();
    }

上面的代码适用于一个新的 android 版本,但不适用于旧版本。我观察到shouldOverrideUrlLoading的不适用于旧版本。

我做错什么了吗?需要一些帮助。谢谢你。

4

0 回答 0