uniapp H5扫码解决方案

JS通过webView调用本地相机扫码二维码,然后webView把二维码数据传给JS

网上找了一堆资料,都是JS传值给webView的,这里自己看了下代码,通过两个步骤实现此功能
1,通过JS调用webView函数打开本地相机
JS代码:

<body class="body_water">
   <button οnclick="subMit();">安卓扫码测试</button>
    <script type="text/javascript" src="./js/jtys/jquery-1.7.2.min.js"></script>
    <script type="text/javascript" src="./js/layer.js"></script>
    <script>
        function subMit() {
            alert("事件触发了!");
            window.FinishWeb.openCamera();
    
        }
       function getQRCode(code){
        alert("进入回调了");
      var cancel=code;
          alert(cancel);
      }
    </script>
</body>

webView代码:

webSettings.setJavaScriptEnabled(true);
webSettings.setDefaultTextEncodingName("UTF-8");
webView.addJavascriptInterface(new FinishWeb(), "FinishWeb");
public class FinishWeb {
    @JavascriptInterface
    public void close() {
        WebActivity.this.finish();
    }

    @JavascriptInterface
    public void openCamera() {
        Toast.makeText(WebActivity.this, "开始识别", Toast.LENGTH_SHORT).show();
        //本地扫码方法
        scan();
    }
}

2,通过webView调用JS的方法,把值传给JS

webView代码:

String code = "123456";
String method =  "getQRCode('" + code + "')";//拼接参数,就可以把数据传递给js
webView.evaluateJavascript(method, new ValueCallback<String>() {
    @Override
    public void onReceiveValue(String value) {
        Log.i("qcl0228", "js返回的数据" + value);
    }
});

一个简单的JS与webView交互传值就实现了

 

https://blog.csdn.net/m0_37596450/article/details/105637686

 

posted @ 2021-10-22 15:18  鼓舞飞扬  阅读(1902)  评论(0编辑  收藏  举报