问题描述
网页在浏览器中可以打开网页在ios中可以打开网页F12进入手机模式可以浏览代码可以加载除此之外一切链接,并显示出来网页链接是https网页在android中确是一片空白
问题解决
WebSettings settings = mWebView.getSettings();settings.setJavaScriptEnabled(true);settings.setDomStorageEnabled(true);settings.setAppCacheEnabled(true);
全部代码
xml文件
<LinearLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"><WebViewandroid:id="@+id/webView1"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_centerHorizontal="true"android:layerType="software" /></LinearLayout>
activity文件:
private WebView mWebView;@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.test_activity);mWebView = (WebView) findViewById(R.id.webView1);// 设置WebView的客户端mWebView.setWebViewClient(new WebViewClient());WebSettings settings = mWebView.getSettings();settings.setJavaScriptEnabled(true);settings.setDomStorageEnabled(true);settings.setAppCacheEnabled(true);String url = "/qq_42776605/article/details/104939054/";mWebView.loadUrl(url);}
查了很多网上资料,试过网上通过重写WebViewClient的onReceivedSslError方法来接受所有网站的证书和wv.setWebChromeClient(new WebChromeClient());两个方法,都没能解决我的问题。
后来试了试通过setDomStorageEnabled()就出现了,那么DOM Storage到底是什么呢?
HTML5 的 DOM Storage 机制提供了一种方式让程序员能够把信息存储到本地的计算机上,在需要时获取。这点和 cookie 相似,区别是 DOM Storage 提供了更大容量的存储空间。
DOM Storage 分为 sessionStorage 和 localStorage。
localStorage 对象和 sessionStorage 对象使用方法基本相同,它们的区别在于作用的范围不同。sessionStorage 用来存储与页面相关的数据,它在页面关闭后无法使用。而 localStorage 则持久存在,在页面关闭后也可以使用。
我们再来看一下webview中常用的Setting介绍:
setJavaScriptEnabled(true) ;//支持js脚本setPluginsEnabled(true) ;//支持插件setUserWideViewPort(false) ;//将图片调整到适合webview的大小setSupportZoom(true) ;//支持缩放setLayoutAlgorithm(LayoutAlgrithm.SINGLE_COLUMN) ;//支持内容从新布局supportMultipleWindows() ;//多窗口setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK) ;//关闭webview中缓存setAllowFileAccess(true) ;//设置可以访问文件setNeedInitialFocus(true) ;//当webview调用requestFocus时为webview设置节点setjavaScriptCanOpenWindowsAutomatically(true) ;//支持通过JS打开新窗口setLoadsImagesAutomatically(true) ;//支持自动加载图片setBuiltInZoomControls(true);//支持缩放webView.setInitialScale(35);//设置缩放比例webView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);//设置滚动条隐藏webView.getSettings().setGeolocationEnabled(true);//启用地理定位webView.getSettings().setRenderPriority(RenderPriority.HIGH);//设置渲染优先级
最后如果使用setDomStorageEnabled()方法还不好用的同学看看自己的代码中是否使用了onReceivedSslError方法,如果使用了,注释掉再试一下哦!