以下代码在所有运行 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);
最佳答案
您是否尝试在普通桌面 chrome 浏览器上将 html_str 作为 html 文件加载?如果不尝试,它可能会带您到某个地方。
在早期版本的 android 中允许跨域脚本,但出于安全原因在最新版本的 android 中,基于 webkit 的 webview 阻止了跨域脚本。这可能会阻止您的页面加载 [在这里疯狂猜测!]。
关于android - Webview shouldOverrideUrlLoading 适用于以前的 android 版本,除了 4.1.x jellybean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13291648/