效果图
项目结构:
核心代码:
JsCallJavaVideoActivity中
package com.zhh.android; import android.app.Activity; import android.content.Intent; import android.net.Uri; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.webkit.JavascriptInterface; import android.webkit.WebSettings; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; /** * js调Android播放视频 */ public class JsCallJavaVideoActivity extends Activity { private WebView webView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_js_call_java_video); findViews(); initWebView(); } /** * 初始化控件 */ private void findViews() { webView = (WebView)findViewById( R.id.webview ); } private void initWebView(){ WebSettings webSettings = webView.getSettings(); //设置支持javaScript脚步语言 webSettings.setJavaScriptEnabled(true); //支持双击-前提是页面要支持才显示 // webSettings.setUseWideViewPort(true); //支持缩放按钮-前提是页面要支持才显示 webSettings.setBuiltInZoomControls(true); //设置客户端-不跳转到默认浏览器中 webView.setWebViewClient(new WebViewClient()); //设置支持js调用java webView.addJavascriptInterface(new AndroidAndJsInterface(),"android"); //加载网络资源 // webView.loadUrl("http://atguigu.com/teacher.shtml"); webView.loadUrl("file:///android_asset/RealNetJSCallJavaActivity.htm"); // webView.loadUrl("http://10.0.2.2:8080/assets/RealNetJSCallJavaActivity.htm"); } class AndroidAndJsInterface { /** * 被js调用的方法 */ @JavascriptInterface public void playVideo(int id,String videoUrl,String tile){ //调起系统所有播放器 Intent intent = new Intent(); intent.setDataAndType(Uri.parse(videoUrl),"video/*"); startActivity(intent); } } }
activity_js_call_java_video.xml中
RealNetJSCallJavaActivity.htm中<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.zhh.android.JsCallJavaVideoActivity" android:orientation="vertical" > <WebView android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent"/> </LinearLayout>
<!DOCTYPE html> <html><head> <meta name="keywords" content="ANZO,GAME,LOL,DNF,DOTA,撸啊撸,地下城与勇士,掌游宝,攻略,宝典,模拟器,加点,战报,英雄,最新,最全,最强,视频"> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <meta name="format-detection" content="address=no;email=no"> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>移动版</title> <link rel="shortcut icon" href="http://api.lol.zhangyoubao.com/img/favicon.jpg"> <!-- CSS测试地址:<link href="http://static.zhangyoubao.com/web_dev/phone_item_400500.css" type="text/css" rel="stylesheet"/> --> <link href="RealNetJSCallJavaActivity_files/phone_item_400500.css" type="text/css" rel="stylesheet"> </head> <body> <link id="font_size" href="" type="text/css" rel="stylesheet"> <div class="news"> <div class="mv_name"> <h1>6.9玛尔扎哈OP套路教程</h1> <p> <span>作者:掌游宝@掌游宝</span> <!-- 文章生成时间大于 2016-03-24 0:00,则用新规范取作者和来源 --> <span class="separ">|</span> <span class="sp_time">5月7日 15:00</span> </p> </div> <div class="news_cont" id="news_cont"> <div class="mv_box"> <div class="mv_box_div"> <p><a id="play" tag="video"><img src="RealNetJSCallJavaActivity_files/stop.png"></a></p> </div> <img src="RealNetJSCallJavaActivity_files/mpic65411h572d6eaf.jpg" width="100%"> </div> <div class="mv_info"> <span>时长:7分42秒</span><a id="download" class="download un-down" tag="video&