一、安卓与H5互调
(1)Java调用js 主要代码
Java代码:
WebSettings webSettings = webView.getSettings();
//设置支持javaScript脚步语言
webSettings.setJavaScriptEnabled(true);
调用js
webView.loadUrl("javascript:javaCallJs(" + "'" + numebr + "'" + ")");//调用js有参方法
webView.loadUrl("javascript:javaCallJsTest()");//调用js无参方法
js代码:
//有参
function javaCallJs(arg){
document.getElementById("content").innerHTML =
("欢迎:"+arg );
}
//无参
function javaCallJsTest(){
document.getElementById("text1").innerHTML = ("javaCallJsTest被调用了");
}
2、js调用Java代码
java主要代码:
//设置支持js调用java
webView.addJavascriptInterface(new AndroidAndJSInterface(),"Android");
/** * js可以调用该类的方法 */
class AndroidAndJSInterface{
@JavascriptInterface
public void showToast(){
Toast.makeText(JavaAndJSActivity.this, "我被js调用了", Toast.LENGTH_SHORT).show(); }
}
js代码:
<input type="button" value="点击调用Android的showToast方法" onclick="window.Android.showToast()" />
二、js调用Android播放器
Java主要代码:
webView = (WebView) findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
//设置支持javaScript脚步语言
webSettings.setJavaScriptEnabled(true);
//支持双击-前提是页面要支持才显示
//webSettings.setUseWideViewPort(true);
//支持缩放按钮-前提是页面要支持才显示
webSettings.setBuiltInZoomControls(true);
//设置客户端-不跳转到默认浏览器中
webView.setWebViewClient(new WebViewClient());
WebSettings webSettings = webView.getSettings();
//设置支持javaScript脚步语言
webSettings.setJavaScriptEnabled(true);
//设置支持js调用java
webView.addJavascriptInterface(new AndroidAndJSInterface(),"android");
这个是进入进入Android视频播放器的
class AndroidAndJSInterface {
/**
* 该方法将被js调用
* @param id
* @param videoUrl
* @param tile
*/
@JavascriptInterface
public void playVideo(int id,String videoUrl,String tile){
//调起系统所有播放器
Intent intent = new Intent();
intent.setDataAndType(Uri.parse(videoUrl),"video/*");
startActivity(intent);
}
}
js主要代码:
if(obj_play != null) {
obj_play.ontouchstart = function() {
this.className = 'inter_click';
javascript:android.playVideo(itemid, videourl, itemtitle);
ajaxrequest('/stat/item', "POST", true, {type:'play', id:itemid});
}
obj_play.ontouchend = function() {
this.className = 'inter';
}
}