Webview shouldOverrideUrlLoading适用于以前的Android版本,除了4.1.x jellybean

时间:2012-11-08 15:06:01

标签: android webview android-4.2-jelly-bean

以下代码适用于运行android 2.x的所有设备,但不适用于带有4.1.2的Nexus 7平板电脑

问题是shouldOverrideUrlLoading永远不会运行。 onPageFinished运行正常

我很感激任何可用的帮助。

wv = (WebView) root_view.findViewById(R.id.wv);
wv.setBackgroundColor(res.getColor(R.color.def_bgr_color));
wv.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
wv.setWebViewClient(new MyWebViewClient() );

WebSettings web_settings = wv.getSettings();
web_settings.setJavaScriptEnabled(true);
web_settings.setLoadWithOverviewMode(true);
web_settings.setUseWideViewPort(false);
web_settings.setPluginsEnabled(true);
web_settings.setSupportZoom(true);
web_settings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

public class MyWebViewClient extends WebViewClient {
    public MyWebViewClient() {
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        Log.i(TAG, "RUN shouldOverrideUrlLoading" );
        return true;

    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Log.i(TAG, "RUN onPageFinished" );
    }
}


String html_str = ... something html ...

wv.loadDataWithBaseURL("file:///android_asset/", html_str, "text/html", "utf-8", null);

1 个答案:

答案 0 :(得分:0)

您是否尝试在常规桌面Chrome浏览器上将html_str加载为html文件?如果不尝试,它可能会带你到某个地方。

在早期版本的android跨域脚本允许但是出于安全原因在最新版本的android中,基于webkit的webview阻止了跨域脚本编写。这可能会阻止您的网页加载[在这里疯狂猜测!]。