如何从 Android 调用 JavaScript?296


Android 提供了几种方法来从原生代码调用 JavaScript,包括:

()

这是在 WebView 中调用 JavaScript 的最简单方法。它接受一个 JavaScript 字符串,并将其作为 WebView 的当前文档的一部分来执行。例如:```java
WebView webView = (WebView) findViewById(.web_view);
("alert('Hello, world!');", null);
```

JavaScriptInterface

JavaScriptInterface 允许您将 Java 对象暴露给 JavaScript 代码。这可以用于从 JavaScript 代码中调用 Java 方法。要使用 JavaScriptInterface,您需要创建一个实现 JavaScriptInterface 接口的 Java 类,并在您的 Android 代码中注册它。例如:```java
public class MyJavaScriptInterface implements JavaScriptInterface {
@Override
public String getMessage() {
return "Hello from Java!";
}
}
// 在您的 Activity 中注册 JavaScriptInterface
WebView webView = (WebView) findViewById(.web_view);
(new MyJavaScriptInterface(), "myInterface");
```
然后,您可以在 JavaScript 代码中使用 "myInterface" 对象来调用 Java 方法:
```javascript
(); // 返回 "Hello from Java!"
```

()

() 可以用于拦截 JavaScript 提示并执行自定义操作。当 JavaScript 代码调用 "prompt()" 方法时,将会触发此方法。您可以使用此方法来执行自定义操作,例如从 Java 代码中返回一个值。例如:```java
public class MyChromeClient extends WebChromeClient {
@Override
public boolean onJsPrompt(WebView view, String url, String message, String defaultValue, JsPromptResult result) {
// 在这里处理 JavaScript 提示
("Hello from Java!"); // 返回 "Hello from Java!"
return true;
}
}
// 在您的 Activity 中设置 ChromeClient
WebView webView = (WebView) findViewById(.web_view);
(new MyChromeClient());
```

WebMessagePort

WebMessagePort 提供了一种在 Android WebView 和 JavaScript 代码之间进行双向通信的方法。您可以使用 WebMessagePort 来发送和接收消息。例如:```java
// 在 Java 代码中创建 WebMessagePort
WebMessagePort webMessagePort = new WebMessagePort();
// 将 WebMessagePort 添加到 WebView
WebView webView = (WebView) findViewById(.web_view);
("myPort", webMessagePort);
// 监听来自 JavaScript 代码的消息
((message) -> {
// 处理来自 JavaScript 代码的消息
});
// 向 JavaScript 代码发送消息
("Hello from Java!");
```
```javascript
// 在 JavaScript 代码中创建 WebMessagePort
var webMessagePort = new MessagePort();
// 接收来自 Java 代码的消息
= (event) => {
// 处理来自 Java 代码的消息
};
// 向 Java 代码发送消息
("Hello from JavaScript!");
```

注意事项* 确保将您的 JavaScript 代码放在 WebView HTML 文件中 "javascript:" 协议下。
* 异步执行 JavaScript 代码,因此您可能需要使用回调或 Promise 来处理结果。
* 正确处理安全问题,例如跨域脚本攻击 (XSS)。
* 使用调试工具(如 Chrome DevTools)来调试您的 JavaScript 代码。

2025-01-15


上一篇:JavaScript 动态函数:定义、调用和优势

下一篇:初探 JavaScript:视频教程助你入门