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
