android webview 与 JS 是如何进行交互的

主要是采用 JavascriptInterface

先上一段JS代码

<html lang="zh-CN">
<script>
            function AndroidCallJs(){
                 document.getElementById("Message").innerHTML = "JAVA调用了JS的无参方法";
            }
            function AndroidCallJsValue(arg){
                 document.getElementById("Message").innerHTML = (arg);

            }

</script>
<button id="Message">调用js的值</button>
<br/>
<button type="button" onclick="window.android.jsCallAndroid()">Js调用Java代码无参数</button>
<br/>
<button type="button" onclick="window.android.jsCallAndroidValue('Js传过来的参数')">Js调用Java代码有参数</button>
</html>

然后设置一些webview的基础设置 让webview支持 JavascriptInterface

WebSettings webSettings = mViewView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setDomStorageEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAllowFileAccessFromFileURLs(true);
        webSettings.setAllowUniversalAccessFromFileURLs(true);
        webSettings.setAppCacheEnabled(true);
        webSettings.setAllowContentAccess(true);

        mViewView.addJavascriptInterface(WebViewActivity.this, "android");

首先是android 调用 js 有参 和无参

//无参数调用
web_showAndroidCallJS.setOnClickListener(new View.OnClickListener() {//android 调用js'
            @Override
            public void onClick(View v) {
                mViewView.loadUrl("javascript:AndroidCallJs()");
            }
        });
//传参调用
web_showMessageCallJSValue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mViewView.loadUrl("javascript:AndroidCallJsValue(" +"\'"+ s +"\'"+ ")");
            }
        });

然后是js 调用android 方法 也是分为有参和无参 具体参考就js代码

 /**
     * js调用android 无参数
     */
    @JavascriptInterface
    public void jsCallAndroid(){
        web_showMessage.setText("Js调用Android方法");
    }

    /**
     * ja调android 有参数
     * @param value 为js传过来的参数
     */
    @JavascriptInterface
    public void jsCallAndroidValue(String value){
        web_showMessage.setText(value);
    }

到这里交互就结束了 此文章只涉及交互

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值