JavaScript基础教程之JavaScript与Android的所有交互
沉沙 2019-05-15 来源 : 阅读 1195 评论 0

摘要:本篇文章探讨了JavaScript基础教程之JavaScript与Android的所有交互,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

本篇文章探讨了JavaScript基础教程之JavaScript与Android的所有交互,希望阅读本篇文章以后大家有所收获,帮助大家对相关内容的理解更加深入。

JavaScript基础教程之JavaScript与Android的所有交互

<

WebViewJavascriptBridge是移动UIView和Html交互通信的桥梁,用作者的话来说就是实现java和js的互相调用的桥梁。
替代了WebView的自带的JavascriptInterface的接口,使得我们的开发更加灵活和安全。
本博客把JSBridge库近所有Android与(HTML+JS)的交互的方式全部实现,代码详细,注释清除,希望对各位有所帮助。
效果如下图:
      
开发前的准备:(两种方式选择,选一种即可)
   方式1:直接导入JSBridge的library包即可,  AndroidStudio导library包请看博客:AndroidStudio怎样导入library项目开源库
        library包下载
 
    方式2:引入库,在bulid.gradle中添加如下代码
              
repositories {
    maven { url "https://jitpack.io" }
}
dependencies {
    compile ‘com.github.lzyzsd:jsbridge:1.0.4‘
}
 
1:默认方式(两种(1:DefaultHandler默认的方式);2:自定类实现)
//展示第一种
bridgeWebView.setDefaultHandler(new DefaultHandler());
//data是JavaScript返回的数据
private void setHandler(){
        bridgeWebView.setDefaultHandler(new BridgeHandler() {
            @Override
            public void handler(String data, CallBackFunction function) {
                Toast.makeText(MainActivity.this,"DefaultHandler默认:"+data,Toast.LENGTH_LONG).show();
            }
        });
   }
 
JS
connectWebViewJavascriptBridge(function(bridge) {
            bridge.init(function(message, responseCallback) {
                console.log(‘JS got a message‘, message);
                var data = {
                    ‘json‘: ‘JS返回任意数据!‘
                };
                console.log(‘JS responding with‘, data);/*打印信息*/
                 document.getElementById("init").innerHTML = "data = " + message;
                responseCallback(data);
            });
 
2:Html点击事件利用JS function方法调Android端并相互传值。
function testClick() {
            var str1 = document.getElementById("text1").value;
            var str2 = document.getElementById("text2").value;
            window.WebViewJavascriptBridge.callHandler(
                ‘submitFromWeb‘
                , {‘Data‘: ‘json数据传给Android端‘}  //该类型是任意类型
                , function(responseData) {
                    document.getElementById("show").innerHTML = "得到Java传过来的数据 data = " + responseData
                }
            );
        }
 
Android.Java
 //注册submitFromWeb方法
        bridgeWebView.registerHandler("submitFromWeb", new BridgeHandler() {
            @Override
            public void handler(String data, CallBackFunction function) {
                Log.i(TAG,"得到JS传过来的数据 data ="+data);
                show(data);
                function.onCallBack("传递数据给JS");
            }
        });
 
3:Android点击事件调用JS方法并相互传值。
 @Override
    public void onClick(View v) {
        //Java 调JS的functionJs方法并得到返回值
        bridgeWebView.callHandler("functionJs", "Android", new CallBackFunction() {
            @Override
            public void onCallBack(String data) {
                // TODO Auto-generated method stub
               show(data);
            }
        });
    }
 
JS.js
 bridge.registerHandler("functionJs", function(data, responseCallback) {
                document.getElementById("show").innerHTML = ("Android端: = " + data);
                var responseData = "Javascript 数据";
                responseCallback(responseData);//回调返回给Android端
            });
 
send方式(包含又返回值和无返回值两种)
无返回值:
bridgeWebView.send("无返回值");
function testClick() {
            var str1 = document.getElementById("text1").value;
            var str2 = document.getElementById("text2").value;
            //将Android端得到的数据在网页上显示,并其他数据传给Android端,  可用于初始化和点击操作
            var data = {id: 1, content: "我是内容哦"};
            window.WebViewJavascriptBridge.send(
                data
                , function(responseData) {
                    document.getElementById("show").innerHTML = "data = " + responseData
                }
            );
       }
       本文由职坐标整理发布,学习更多的相关知识,请关注职坐标IT知识库!
   

本文由 @沉沙 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程