shouldoverrideurlloading 方法未被调用,Webview Android。

3

首先,这篇文章可能看起来像是其他问题的可能重复,但我已经查看了许多问题,但发现它们并没有帮助。

现在我的问题是,我正在加载Webview中的一个URL,然后我想在每个Webview事件上跟踪URL,所以我为Webview设置了WebviewClient并覆盖了shouldoverrideurlloading方法,但在第一个事件之后,shouldoverrideurlloading不再被调用。(第一次工作)

以下是我使用的代码:

    wvSecurity = (WebView) findViewById(R.id.wvSecurity);               
    wvSecurity.getSettings().setJavaScriptEnabled(true);
    wvSecurity.getSettings().setAllowContentAccess(true);
    wvSecurity.getSettings().setAllowUniversalAccessFromFileURLs(true);     
    wvSecurity.getSettings().setBuiltInZoomControls(false);
    wvSecurity.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    wvSecurity.getSettings().setLoadWithOverviewMode(true);
    wvSecurity.getSettings().setDomStorageEnabled(true);

    wvSecurity.loadUrl("URL");

    wvSecurity.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view,
                        final String urlStr) {
                    Log.i("URL", "::" + urlStr);
                    return false;
                }
    }

编辑 ::

好的,我想要跟踪的URL使用POST方法,现在我的问题是如何跟踪POST URL及其数据。有一件事,我无法访问Web页面,因此我无法使用GET方法。请帮忙!!!


你尝试过在从 shouldOverrideUrlLoading 返回 true 后执行吗? - ρяσѕρєя K
我已经尝试了从8点到21点的每个API。 - GOLDEE
@ρяσѕρєяK 我也尝试过了。 - GOLDEE
1
有没有办法捕获POST URL?@RGraham - GOLDEE
你有没有找到这个问题的答案? - PGMacDesign
显示剩余5条评论
2个回答

2
我猜这个方法会在从页面点击超链接或发生重定向时被调用。所以确保这件事情。

0

我认为你需要将URL放在相应的位置,这样就可以解决你的问题。

        wvSecurity = (WebView) findViewById(R.id.wvSecurity);
        wvSecurity.getSettings().setJavaScriptEnabled(true);
        wvSecurity.getSettings().setAllowContentAccess(true);
        wvSecurity.getSettings().setAllowUniversalAccessFromFileURLs(true);
        wvSecurity.getSettings().setBuiltInZoomControls(false);
        wvSecurity.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        wvSecurity.getSettings().setLoadWithOverviewMode(true);
        wvSecurity.getSettings().setDomStorageEnabled(true);
        wvSecurity.loadUrl("http://www.google.com");
        wvSecurity.setWebViewClient(new HelloWebViewClient());



    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            System.out.println("URL :: " + url);
            view.loadUrl(url);
            return true;
        }

        @Override
        public void onPageFinished(WebView view, final String url) {
        }
    }

1
请不要在从shouldOverrideUrlLoading获取的URL上调用loadUrl,因为该回调也会针对具有非https方案的子框架进行调用。如果您访问像http://jsbin.com/gupug/1/quiet这样的页面,则您的代码最终将调用view.loadUrl('tel:1234'),并且您最终将显示一个错误页面,因为webview不知道如何加载tel:URL。 您应该从shouldOverrideUrlLoading中返回false而不是调用loadUrl(url)并返回true。 - marcin.kosiba

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接