在Android中,通过JavaScript Bridge,您可以从JavaScript代码调用原生Android方法。以下是实现此功能的步骤:
首先,在Android项目中创建一个类,该类将包含要从JavaScript调用的原生方法。确保此类的实例是单例的,以避免创建多个实例。
public class JavaScriptInterface {
private static JavaScriptInterface instance;
private JavaScriptInterface() {
}
public static synchronized JavaScriptInterface getInstance() {
if (instance == null) {
instance = new JavaScriptInterface();
}
return instance;
}
//这个方法将被JavaScript调用
@JavascriptInterface
public void showToast(String message) {
Toast.makeText(getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
注意我们在方法上添加了@JavascriptInterface
注解。这是必需的,因为它告诉WebView启用JavaScript接口。
在您的Activity或Fragment中,将创建的本地对象添加到WebView的JavaScript接口中。
WebView webView = findViewById(R.id.webView);
webView.getSettings().setJavaScriptEnabled(true);
// 添加JavaScript接口并加载URL
webView.addJavascriptInterface(JavaScriptInterface.getInstance(), "Android");
webView.loadUrl("file:///android_asset/index.html");
现在您可以在HTML文件中的JavaScript代码中调用刚才创建的原生方法了。
<!DOCTYPE html>
<html>
<head>
<title>Call Android from JavaScript</title>
<script type="text/javascript">
function callAndroidToast() {
Android.showToast("Hello from JavaScript!");
}
</script>
</head>
<body>
<button onclick="callAndroidToast()">点击显示toast</button>
</body>
</html>
当用户点击按钮时,将调用Android原生方法showToast()
,显示一条Toast消息。