在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消息。