如何从 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

客户脚本语言详解:深入理解浏览器端的编程世界
https://jb123.cn/jiaobenyuyan/65389.html

快速掌握脚本语言:学习策略与技巧详解
https://jb123.cn/jiaobenyuyan/65388.html

Perl字体颜色控制详解:从基础语法到高级技巧
https://jb123.cn/perl/65387.html

Python趣味编程:玩转京东自营商品数据
https://jb123.cn/python/65386.html

JavaScript 版本详解及兼容性策略
https://jb123.cn/javascript/65385.html
热门文章

JavaScript (JS) 中的 JSF (JavaServer Faces)
https://jb123.cn/javascript/25790.html

JavaScript 枚举:全面指南
https://jb123.cn/javascript/24141.html

JavaScript 逻辑与:学习布尔表达式的基础
https://jb123.cn/javascript/20993.html

JavaScript 中保留小数的技巧
https://jb123.cn/javascript/18603.html

JavaScript 调试神器:步步掌握开发调试技巧
https://jb123.cn/javascript/4718.html