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

小天才Python少儿编程:开启孩子编程思维的趣味之旅
https://jb123.cn/python/65597.html

Perl数组倒序:高效处理数组元素的多种方法
https://jb123.cn/perl/65596.html

达州少儿Python编程培训机构推荐及课程选择指南
https://jb123.cn/python/65595.html

Python数据编程100例:从入门到进阶的实战指南
https://jb123.cn/python/65594.html

Java程序执行脚本:Shell、Python、Groovy等语言的实践
https://jb123.cn/jiaobenyuyan/65593.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