我有一些在 WebView 中打开的网页。
<body onload="window.location.href='htcmd:loaded';">
加载后,我们打开返回 URL“htcmd:loaded”并在代码中进行拦截。 像这样:
getWebView().getSettings().setJavaScriptEnabled(true);
getWebView().setWebViewClient(new WebViewClient() {
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if ("htcmd:loaded".equals(url)) {
Toast.makeText(getActivity(), "htcmd:loaded", Toast.LENGTH_SHORT).show();
}
return true;
}
});
getWebView().loadUrl("https://some.url");
在 android 4.4.2 上,第一次启动一切正常。但是,如果我杀死应用程序并在第一次运行后打开,则网页不会呈现。但是,如果我点击屏幕或更改方向,则会出现网页。问题出在哪里?
解决方案:我有两个技巧))) 首先:在网页中添加一个java脚本:
<body onload="setTimeout(function(){window.location.href='htcmd:loaded';},3000);">
第二:向网络客户端添加代码:
@Override
public void onPageFinished(WebView view, String url) {
if (android.os.Build.VERSION.SDK_INT >= 19) {
view.requestFocus();
}
}
最佳答案
试试这个
w.getSettings().setLoadWithOverviewMode(true);
w.getSettings().setUseWideViewPort(true);
getWebView().getSettings().setJavaScriptEnabled(true);
getWebView().setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return (false);
});
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
}
getWebView().loadUrl("https://www.google.com");
关于Android WebView 不渲染网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23805305/