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