在JavaScript中调用Android代码,可以使用WebView组件。以下是一个简单的示例:
1. 首先,在Android项目中创建一个名为`MyWebViewActivity`的新活动,并在布局文件中添加一个WebView组件:
```xml
xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MyWebViewActivity"> android:id="@+id/webview" android:layout_width="match_parent" android:layout_height="match_parent" />
```
2. 在`MyWebViewActivity`活动中,初始化WebView并加载一个网页:
```java
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import androidx.appcompat.app.AppCompatActivity;
public class MyWebViewActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_webview);
webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 允许执行JavaScript代码
webView.loadUrl("https://www.example.com"); // 加载网页
}
}
```
3. 在JavaScript中调用Android代码,可以使用`window.Android`对象。例如,可以在HTML文件中添加以下JavaScript代码:
```javascript
function callAndroidFunction() {
if (window.Android) {
window.Android.showToast("Hello from JavaScript!");
} else {
console.log("Android not available");
}
}
```
4. 在Android代码中,为WebView设置一个JavaScript接口,以便JavaScript可以调用Java方法:
```java
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import androidx.appcompat.app.AppCompatActivity;
public class MyWebViewActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_my_webview);
webView = findViewById(R.id.webview);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // 允许执行JavaScript代码
webView.addJavascriptInterface(new WebAppInterface(this), "Android"); // 添加JavaScript接口
webView.setWebViewClient(new WebViewClient()); // 设置WebViewClient以处理页面加载事件
webView.loadUrl("https://www.example.com"); // 加载网页
}
// 定义一个JavaScript接口类,用于在JavaScript中调用Java方法
public class WebAppInterface {
Context mContext;
WebAppInterface(Context c) {
mContext = c;
}
@JavascriptInterface
public void showToast(String toast) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
}
}
}
```
现在,当JavaScript调用`callAndroidFunction()`时,它将显示一个Toast消息。