在 Android Studio 中调用写好的 JavaScript 模块,可以使用 WebView 或者 js-engine 等技术。下面分别说明这两种方法:
方法一、使用 WebView
1. 在 layout 文件中添加 WebView 控件
在需要调用 JavaScript 模块的 Activity 的 layout 文件中添加一个 WebView 控件,例如:
```xml
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
```
2. 设置 WebView 的 WebViewClient 和 WebChromeClient
在 Activity 的代码中,需要设置 WebView 的 WebViewClient 和 WebChromeClient。WebViewClient 用于加载网页,WebChromeClient 用于处理 JavaScript 的 alert、confirm 和 prompt 等弹出框。例如:
```java
WebView webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
webView.setWebChromeClient(new WebChromeClient());
```
3. 加载 HTML 文件
将写好的 JavaScript 模块放置在项目的 assets 目录中,然后在 WebView 中加载 HTML 文件即可访问 JavaScript 模块。例如:
```java
webView.loadUrl("file:///android_asset/my_module.html");
```
在 HTML 文件中,可以通过 script 标签导入 JavaScript 模块,并通过 window 对象将模块中的函数暴露给 Android 应用程序。例如:
```html
<script src="my_module.js"></script>
<script>
window.myFunction = my_module.myFunction;
</script>
```
方法二、使用 js-engine
js-engine 是一个在 Android 平台上嵌入 JavaScript 的库,可以在 Java 代码中直接调用 JavaScript 函数。下面是一个简单的示例:
1. 添加依赖项
在项目的 build.gradle 文件中,添加 js-engine 的依赖项。例如:
```gradle
dependencies {
implementation "com.eclipsesource.j2v8:j2v8:4.6.0"
}
```
2. 加载 JavaScript 模块
在 Activity 中,加载 JavaScript 模块,并从中导出需要调用的函数。例如:
```java
String jsModule = MyUtils.readAssetFile(this, "my_module.js");
V8 v8 = new V8();
v8.executeScript(jsModule);
V8Object module = v8.getObject("my_module");
V8Function function = module.getFunction("myFunction");
// 导出函数名
function.registerJavaMethod(new MyFunction(), "myRunnable");
```
上面的代码中,MyUtils.readAssetFile 方法用于读取 assets 目录中的文件内容。myRunnable 是一个 Java 接口,用于在 V8 中执行某个操作,可以根据实际情况对其进行修改。例如:
```java
public interface MyFunction {
void myRunnable();
}
```
3. 调用 JavaScript 函数
在需要调用 JavaScript 函数的代码中,使用 V8 执行上面导出的函数。例如:
```java
function.call(null, new V8Object[] {});
```
以上是调用写好的 JavaScript 模块的方法,希望可以帮助到你。