Webview shouldOverrideUrlLoading 适用于除 4.1.x jellybean 之外的之前的 android 版本

Posted

技术标签:

【中文标题】Webview shouldOverrideUrlLoading 适用于除 4.1.x jellybean 之外的之前的 android 版本【英文标题】:Webview shouldOverrideUrlLoading works in previous android versions except 4.1.x jellybean 【发布时间】:2012-10-28 19:16:53 【问题描述】:

以下代码在所有运行 android 2.x 的设备上都可以正常工作,但在 Nexus 7 平板电脑上却没有 4.1.2

问题是 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】:

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

在早期版本的 android 中允许跨域脚本,但在最新版本的 android 中出于安全原因,基于 webkit 的 webview 禁止跨域脚本。这可能会阻止您的页面加载 [在此处进行疯狂猜测!]。

【讨论】:

以上是关于Webview shouldOverrideUrlLoading 适用于除 4.1.x jellybean 之外的之前的 android 版本的主要内容,如果未能解决你的问题,请参考以下文章

想问开了webview有啥用

electron怎么获取到webview里的元素,webview为加载的网站

webview获取网页点击事件

安卓webview是啥东西

如何监听webview加载完成这个事件

我想问一下开了webview有啥用