android webview自动播放Video
16lz
2021-01-26
由于近期有个需求需要在webview加载完网页上的视频标签(html5 video),经过一番查资料和尝试之后,终于实现了,具体实现如下:自定义一个xml 里面包含Webview组件,自定义WebViewClient,实现onPageFinished方法,回调javascript,实现播放功能
package com.zr.webviewtest;import android.app.Activity;import android.os.Bundle;import android.util.Log;import android.view.View;import android.webkit.ConsoleMessage;import android.webkit.WebChromeClient;import android.webkit.WebResourceResponse;import android.webkit.WebSettings;import android.webkit.WebView;import android.webkit.WebViewClient;import android.widget.FrameLayout;import com.samsung.zr.webviewtest.R;public class MainActivity extends Activity {private FrameLayout frameLayout = null;private WebView webView = null;private WebChromeClient chromeClient = null;private View myView = null;private WebChromeClient.CustomViewCallback myCallBack = null;public MainActivity() {}@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);frameLayout = (FrameLayout)findViewById(R.id.framelayout);webView = (WebView)findViewById(R.id.webview);webView.getSettings().setJavaScriptEnabled(true);webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);webView.setWebViewClient(new MyWebviewCient());chromeClient = new MyChromeClient();webView.setWebChromeClient(chromeClient);webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);webView.setHorizontalScrollBarEnabled(false);webView.setVerticalScrollBarEnabled(false);final String USER_AGENT_STRING = webView.getSettings().getUserAgentString() + " Rong/2.0";webView.getSettings().setUserAgentString( USER_AGENT_STRING );webView.getSettings().setSupportZoom(false);webView.getSettings().setPluginState(WebSettings.PluginState.ON);webView.getSettings().setLoadWithOverviewMode(true);webView.loadUrl("file:///android_asset/index.html");if(savedInstanceState != null){webView.restoreState(savedInstanceState);}}@Overridepublic void onBackPressed() {if(myView == null){super.onBackPressed();}else{chromeClient.onHideCustomView();}}@Overrideprotected void onSaveInstanceState(Bundle outState) {// TODO Auto-generated method stubwebView.saveState(outState);}public void addJavaScriptMap(Object obj, String objName){webView.addJavascriptInterface(obj, objName);}public class MyWebviewCient extends WebViewClient{@Overridepublic WebResourceResponse shouldInterceptRequest(WebView view,String url) {WebResourceResponse response = null;response = super.shouldInterceptRequest(view, url);return response;}@Overridepublic void onPageFinished(WebView view, String url) {// TODO Auto-generated method stubsuper.onPageFinished(view, url);Log.d("dream", "***on page finished");webView.loadUrl("javascript:myFunction()"); }}public class MyChromeClient extends WebChromeClient{@Overridepublic void onShowCustomView(View view, CustomViewCallback callback) {if(myView != null){callback.onCustomViewHidden();return;}frameLayout.removeView(webView);frameLayout.addView(view);myView = view;myCallBack = callback;}@Overridepublic void onHideCustomView() {if(myView == null){return;}frameLayout.removeView(myView);myView = null;frameLayout.addView(webView);myCallBack.onCustomViewHidden();}@Overridepublic boolean onConsoleMessage(ConsoleMessage consoleMessage) {// TODO Auto-generated method stubLog.d("ZR", consoleMessage.message()+" at "+consoleMessage.sourceId()+":"+consoleMessage.lineNumber());return super.onConsoleMessage(consoleMessage);}}}
XML布局文件:
FamilyAlbum A Paragraph.
源码下载地址: http://download.csdn.net/detail/xiangyong2008/7473159
更多相关文章
- android:configChanges="keyboardHidden|orientation
- 继承Application实现Android数据共享
- linux挂载android 根文件系统的过程
- 编译Coco2d-x android 程序出现make: *** No rule to make targe
- android linux 基础知识总结(1)
- Android(安卓)OpenCV使用2_使用OpenCV并进行人脸检测
- Android(安卓)– 在Gradle中更改APK文件名
- android 中解析XML的方法
- Android(安卓)大文件上传时,处理上传进度问题