Android webview 播放视频无法播放以及可以播放预览图为加载不出来

    Android webview 播放视频无法播放以及可以播放预览图为加载不出来的解决方案

1,webView的配置工作:

WebSettings webSettings = shopWebView.getSettings();
webSettings.setBlockNetworkImage(false);
webSettings.setLoadWithOverviewMode(true);
webSettings.setGeolocationEnabled(true);
webSettings.setUseWideViewPort(true); // 关键点
webSettings.setPluginState(WebSettings.PluginState.ON);
//支持js脚本
webSettings.setJavaScriptEnabled(true);
//支持缩放
webSettings.setSupportZoom(true);
//支持内容重新布局
webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
//多窗口
webSettings.supportMultipleWindows();
//当webview调用requestFocus时为webview设置节点
webSettings.setNeedInitialFocus(true);
//设置支持缩放
webSettings.setBuiltInZoomControls(true);
//支持通过JS打开新窗口
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
//支持自动加载图片
webSettings.setLoadsImagesAutomatically(true);
//优先使用缓存:
webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//提高渲染的优先级
webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
// 开启H5(APPCache)缓存功能
webSettings.setAppCacheEnabled(true);
// 开启 DOM storage 功能
webSettings.setDomStorageEnabled(true);
// 应用可以有数据库
webSettings.setDatabaseEnabled(true);
// 可以读取文件缓存(manifest生效)
webSettings.setAllowFileAccess(true);
/*允许跨域访问*/
webSettings.setAllowUniversalAccessFromFileURLs(true);
shopWebView.canGoBack();
shopWebView.setWebChromeClient(new WebChromeClient());

2,视频播放不出来

需要配置:

android:hardwareAccelerated="true" 启用硬件加速

3,视频预览图片加载不出来:

这是Android5.0 WebView中Http和Https混合问题,在Android5.0 以及以上的系统,当WebView加载的链接为Https开头,但是链接里面的内容,比如图片为Http链接,这时候,图片就会加载不出来。

if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT){

getSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);

}

在Android5.0以下,默认是采用的MIXED_CONTENT_ALWAYS_ALLOW模式,即总是允许WebView同时加载Https和Http;而从Android5.0开始,默认用MIXED_CONTENT_NEVER_ALLOW模式,即总是不允许WebView同时加载Https和Http。

虽然官网给出的建议是,为了安全考虑,使用MIXED_CONTENT_NEVER_ALLOW模式,但是在实际引用中,当我们的服务器已经升级到Https,但是一些页面的资源是第三方的,我们不能要求第三方也都升级到Https,所以我们只能根据系统版本,用代码去设置加载模式为MIXED_CONTENT_ALWAYS_ALLOW。

 

你可能感兴趣的:(Android)