API说明
addJavascriptInterface(Object object, String name)
参数说明:
第一个参数是一个包含html页面中调用方法的类.
第二个参数是调用类时的标记.
Javascript中调用Java 的规则:
Html中结构:
- javascript: + name + . + method
说明:
-
javascript:是不变的,不要忘记冒号。
-
name:是在调用 addJavascriptInterface(Object object, String name)方法中设置的name,二者要保持对应。method:是调用的方法,method即调用方法中的方法名字。
eg:Java中有call 方法,在Html中js中
<a href='javascript:contact.call()'>拨打</a>
,点击拨打便会调用Java 中的call 方法。
Java 中调用 Javascript 的规则:
Java中结构:
mWebView.loadUrl("javascript: + methodName('" + data + "')");
在此结构中只有methodName和data是变量,其他都为不可变的,照用即可。
-
methodName:是指Javascript中的方法
-
data:是指传入的数据。
在实际使用时重要注意问题
- Android 4.2以后要加注释语句@JavascriptInterface
在Android 4.2之前向webview注入的对象所暴露的接口没有注释语句@JavascriptInterface,而4.2及以后的则多了注释语句@JavascriptInterface
经过查官方文档所知,因为这个接口允许JavaScript 控制宿主应用程序,这是个很强大的特性,但同时,在4.2的版本前存在重大安全隐患,因为JavaScript 可以使用反射访问注入webview的java对象的public fields,在一个包含不信任内容的WebView中使用这个方法,会允许攻击者去篡改宿主应用程序,使用宿主应用程序的权限执行java代码。因此4.2以后,任何为JS暴露的接口,都需要加.
- 在Android 较高版本中调用JavaScript 中方法的语句要在线程中运行。
// 调用javascript中的show()方法
mHandler.post(new Runnable() {
@Override
public void run() {
mWebView.l
【一线大厂Java面试题解析+核心总结学习笔记+最新架构讲解视频+实战项目源码讲义】
浏览器打开:qq.cn.hn/FTf 免费领取
oadUrl(“javascript:show(’” + json + “’)”);
}
});
示例代码:
html 代码:
刷新
Java代码:
public class MainActivity extends AppCompatActivity {
private WebView mWebView;