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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/miaozhenzhong/article/details/53495029

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的真实场景

阅读更多
换一批

没有更多推荐了,返回首页