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