我们知道使用 WebViewClient 和 WebChromeClient 类可以响应发生在 WebView 里的特定事件。然而,通过注入任意 Java 对象到 WebView 的 JavaScript 中,我们还可以做到更多。查阅 WebView 文档,找到 addJavascriptInterface (Object object, String name) 方法。使用该方法,可以将任意 Java 对象注入到指定文档中。
1. API 简介
方法 | |
void addJavascriptInterface (Object object, String name) 将 Java 对象注入到 WebView 中。该对象会被注入主框架的 JavaScript 上下文,并将对象名暴露给 JavaScript。这样就可以从 JavaScript 中访问 Java 对象的方法。对于面向 API 级 JELLY_BEAN_MR1 及更高版本的应用程序,JavaScript 只能访问被 JavaScriptInterface 注释的公共方法。 对于 API 级 JELLY_BEAN 或更低级别的应用程序,可以访问所有公共方法(包括继承的方法),相关含义,请参阅下面的重要安全说明。 | |
参数 | |
object | Object: Java 对象,用于注入到 WebView 的 JavaScript 上下文。 空值被忽略。 |
name | String: 暴露给 JavaScript 的对象名称。 |