Android Java和js互调案例演示(HTML5混合开发)

来源:互联网 发布:手机淘宝怎么团购 编辑:程序博客网 时间:2024/05/07 17:35

WebView相关知识-案例1

1.加载网页要用WebView控件

2.要想支持js就要设置 webview.getSettings().setJavaScriptEnabled(true);

3.webview.loadUrl可以加载本地的html页面也可以加载网络html页面,还可以调用js的方法 webview.loadUrl("file:///android_asset/JavaCallJS1.html");

放html页面的时候是放在assets目录下,代码加载的时候: file:///android_asset/vido/xxxxx.html

4.在Android中要从html页面中弹出对话框需要

//支持从html中弹出对话框 //webview.setWebChromeClient(new WebChromeClient());

WebView相关知识-案例2 --js调用java

// 添加一个对象, 让JS可以访问该java对象的方法, 该java对象中可以调用JS中的方法 //注意Java调用JS的时候addJavascriptInterface是不必须的 mWebView.addJavascriptInterface(getHtmlObject(), "yangguangfu");

html中点击事件 

调用yangguangfu(对应的是一个接口) 对应的JavacallHtml方法

WebView相关知识-案例3-js-调用Java的运用场景

1.从网页拨打电话 2.从网页中调用系统播放器并且播放 3.网页中吊起系统的邮件客户端

1.webView.loadUrl("file:///android_asset/JsCallJava.html");

2.webView.addJavascriptInterface(new Atguigu(), "Android");

3.加载数据

4.调用了Java代码中的方法showcontacts(),代码如下:

  // Html调用此方法传递数据    public void showcontacts() {        handler.post(new Runnable() {            @Override            public void run() {                Log.e(TAG, "java --showcontacts---");                // 下面的代码建议在子线程中调用                String json = "[{\"name\":\"阿福\", \"amount\":\"100000\", \"phone\":\"18600012345\"}]";                // 调用JS中的方法                webView.loadUrl("javascript:show('" + json + "')");//加载电话                //视频信息                String jsonVideo = "[{\"name\":\"我是视频点击播放\", \"amount\":\"9999\", \"phone\":\"http://10.0.2.2:8080/oppo.mp4\"}]";                webView.loadUrl("javascript:showvideo('" + jsonVideo + "')");//视频            }        });

5.java调用js代码中的show()方法,作用是在html页面中显示数据

  function show(jsondata){                            var jsonobjs = eval(jsondata);                var table = document.getElementById("personTable");                for(var y=0; y<jsonobjs.length; y++){                    var tr = table.insertRow(table.rows.length);                     var td1 = tr.insertCell(0);                    var td2 = tr.insertCell(1);                    td2.align = "center";                    var td3 = tr.insertCell(2);                    td3.align = "center";                    td1.innerHTML = jsonobjs[y].name;                     td2.innerHTML = jsonobjs[y].amount;                     td3.innerHTML = "<a href='javascript:Android.call(\""+ jsonobjs[y].phone+ "\")'>"+ jsonobjs[y].phone+ "</a>";                }        }

6.点击的时候调用了java的call方法,并且传递参数给java代码 javascript:Android.call(\""+ jsonobjs[y].phone+ "\")//电话 javascript:Android.playVideo(\""+ jsonobjs[y].phone+ "\")//视频

7.Java中的call方法就去拨打电话了

  public void call(String phone) {        Log.e(TAG, "java --call(String phone)---==" + phone);        startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:"                + phone)));    }

8.如果是视频,就调用Java中的playVideo方法

 public void playVideo(String videoUrl) {        Log.e(TAG, "java --playVideo(String videoUrl)---==" + videoUrl);        Intent intent = new Intent(Intent.ACTION_VIEW);        intent.setDataAndType(Uri.parse(videoUrl), "video/*");        startActivity(intent);    }

WebView相关知识-案例4-js-调用Java的真实场景

0 0
原创粉丝点击