解决webView无法播放视频的问题
2017-05-09 23:09
721 查看
在日常的android开发中,我们有时会用到 WebView去加载一个html文件,注意有时加载的是整个html文件的内容,而不是加载html文件的路径,于是需要用到webView的方法:
mWebView.loadDataWithBaseURL(null, s, "text/html", "utf-8", null);
关于方法中参数的介绍,可以参看api
/** * Loads the given data into this WebView, using baseUrl as the base URL for * the content. The base URL is used both to resolve relative URLs and when * applying JavaScript's same origin policy. The historyUrl is used for the * history entry. * <p> * Note that content specified in this way can access local device files * (via 'file' scheme URLs) only if baseUrl specifies a scheme other than * 'http', 'https', 'ftp', 'ftps', 'about' or 'javascript'. * <p> * If the base URL uses the data scheme, this method is equivalent to * calling {@link #loadData(String,String,String) loadData()} and the * historyUrl is ignored, and the data will be treated as part of a data: URL. * If the base URL uses any other scheme, then the data will be loaded into * the WebView as a plain string (i.e. not part of a data URL) and any URL-encoded * entities in the string will not be decoded. * <p> * Note that the baseUrl is sent in the 'Referer' HTTP header when * requesting subresources (images, etc.) of the page loaded using this method. * * @param baseUrl the URL to use as the page's base URL. If null defaults to * 'about:blank'. * @param data a String of data in the given encoding * @param mimeType the MIMEType of the data, e.g. 'text/html'. If null, * defaults to 'text/html'. * @param encoding the encoding of the data * @param historyUrl the URL to use as the history entry. If null defaults * to 'about:blank'. If non-null, this must be a valid URL. */ public void loadDataWithBaseURL(String baseUrl, String data, String mimeType, String encoding, String historyUrl) { checkThread(); mProvider.loadDataWithBaseURL(baseUrl, data, mimeType, encoding, historyUrl); }
当然,这篇文章的重点不是介绍这个方法的使用,而是在我们的日常使用中,可能出现html中有播放视频的内容,于是问题便产生了,webView加载的html中,视频播放不了,下面便讲讲对于此问题的解决方案:
首先,你需要确认的是 html 文件中的 Video 是是否能播放,测试的方法是将html的内容复制到html文件中,然后用浏览自加载html文件路径,看在浏览器中文件是否能正常播放。
ok,在第一步确认video正常以后,再来查找webView的加载问题。首先,若加载内容需要联网的,你需要给你的app加上联网权限,然后在你webView界面的activity需要硬件加速的配置,去mainfast 配置文件中,找到显示webview控件 的activity(例如我的activity命名为:OffersInfoActivity),做如下设置:
<activity android:name=".ui.offersInfo.OffersInfoActivity" android:hardwareAccelerated="true"/>
关键代码是硬件加速:
android:hardwareAccelerated="true"
然后去activity界面做 webView 的设置,下面直接贴webview的设置代码:
WebSettings webSettings = mWebView.getSettings(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { webSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } webSettings.setDefaultTextEncodingName("utf-8") ;//这句话去掉也没事。。只是设置了编码格式 webSettings.setJavaScriptEnabled(true); //这句话必须保留。。不解释 webSettings.setDomStorageEnabled(true);//这句话必须保留。。否则无法播放优酷视频网页。。其他的可以 mWebView.setWebChromeClient(new WebChromeClient());//重写一下。有的时候可能会出现问题 mWebView.setWebViewClient(new WebViewClient(){//不写的话自动跳到默认浏览器了。。跳出APP了。。怎么能不写? public boolean shouldOverrideUrlLoading(WebView view, String url) {//这个方法必须重写。否则会出现优酷视频周末无法播放。周一-周五可以播放的问题 if(url.startsWith("intent")||url.startsWith("youku")){ return true; }else{ return super.shouldOverrideUrlLoading(view, url); } } });//最后一步,加载html文件的内容:
mWebView.loadDataWithBaseURL(null, s, "text/html", "utf-8", null);
activity 退出的时候,需要销毁webView
@Override protected void onDestroy() { if (mWebView != null) { mWebView.destroy(); } super.onDestroy(); }
ok,以上代码亲测可用,今天关于webview无法加载视频的内容就讲到这里,本篇文章的内容参考了以下链接:
http://blog.csdn.net/a872822645/article/details/54708566
在此感谢!
相关文章推荐
- ANDROID webview解决视频无法播放问题
- Android 使用Webview无法播放视频问题的解决办法
- 解决Android中WebView视频无法播放的问题
- Android Webview完美支持播放各种视频。(解决无法播放优酷视频的问题以及周末无法播放优酷视频的问题)
- android webView 无法播放视频,无法暂停,继续播放视频问题,无法根据浏览器居中显示内容问题
- Android中使用WebView全屏播放视频时home键不起作用的问题解决
- Android Webview中解决H5的音视频不能自动播放、只有声音没有图像的问题
- android webView 无法播放视频,无法暂停,继续播放视频问题,无法根据浏览器居中显示内容问题
- Android WebView 播放视频无法播放问题和视频适应屏幕大小
- 解决WebViewActivity 退出后还在播放音视频的问题
- android 使用webview访问优酷无法播放视频的问题
- Android WebView无法播放视频或直播,关闭界面后任在播放的问题;
- Android Webview中解决H5的音视频不能自动播放的问题
- Android WebView 无法播放视频 加载不出来等问题
- Android Webview无法播放美拍网或者优酷网视频,其他视频没问题解决办法。(网页可能暂时无法打开或已永久移至新地址)
- Android使用VideoView出现无法播放此视频问题的解决方法
- Android WebView无法播放腾讯视频问题
- WebView无法播放视频的解决办法
- 解决video标签在安卓webview下无法自动播放问题
- video标签在安卓webview下无法自动播放问题的解决方法