demo.html残缺示例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>demo</title></head><body> <div id="js_content"></div> <button type="button" onclick="window.injectedObject.sayHello()">点击调用android代码</button> <button type="button" onclick="window.injectedObject.sayHello('张三')">点击调用android代码并传递参数</button> <script> function androidCallJs() { document.getElementById('js_content').innerHTML = 'hello tom'; } // 带参数 function androidCallJsWithArgs(name) { document.getElementById('js_content').innerHTML = `hello ${name}`; } </script></body></html>
一、android调用webview javascript
首先要启用javascript,默认是false
ws.setJavaScriptEnabled(true);
加载调用
webView.loadUrl("javascript:androidCallJs()"); // hello tom// 带参数webView.loadUrl("javascript:androidCallJsWithArgs('jack')"); // hello jack
如果要显示后调用,只需把代码放到 onPageFinished
生命周期里就能够了
二、webview javascript调用android
webView.addJavascriptInterface(new MyJavascriptInterface(this), "injectedObject");
MyJavascriptInterface.java局部代码
public class MyJavascriptInterface { @JavascriptInterface public void sayHello() { Log.e("hello tom"); } @JavascriptInterface public void sayHello(String name) { Log.e("hello" + name); } @JavascriptInterface public void printImageSrc(String src) { Log.e("src", src); }}
三、加载完间接调用
webView.loadUrl(`javascript:(function() { var images = document.images; for(var i=0; i<images.length; i++) { images[i].onclick = function() { window.injectedObject.printImageSrc(this.src); } }})()`);
留神:下面用的是javascript模板字符串,次要是为了方面浏览,理论应用须要android代码拼装
欢送关注:https://www.fenxianglu.cn/
参考链接:
- https://www.jianshu.com/p/97f...