从 JavaScript 调用 Java/Kotlin 代码
Android WebView 有一个名为Javascript Interface 的功能,这是您应该寻找的。p>
它允许您从您的 javascript 代码运行您的 java/kotlin 代码。
你可以定义一个接口
val webView: WebView = findViewById(R.id.webview)
webView.addJavascriptInterface(WebAppInterface(this), "Android")
这里,WebAppInterface 定义了您希望从 javascript 中调用的方法。
/** Instantiate the interface and set the context */
class WebAppInterface(private val mContext: Context) {
/** Show a toast from the web page */
@JavascriptInterface
fun showToast(toast: String) {
Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show()
}
}
“Android”这里是添加到您的 webview 的接口,可以在您的 javascript 代码中用于调用 Android 方法。
完成后,您可以从 javascript 中调用方法,
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
请记住,接口回调并不总是在主线程中调用。因此,如果您想执行任何 UI 操作,请确保使用 runOnUiThread。
从 Java/Kotlin 代码调用 JavaScript 函数
Android WebView 有一个名为 Evaluate Javascript 的功能,适用于 API 19+,可以从 java/kotlin 代码调用您的 javascript 函数。
例如,对于以下 javascript:
<script type="text/javascript">
function printName(name) {
console.log(name);
}
</script>
你可以写这段代码来调用这个JS函数:
yourWebview.evaluateJavascript("printName(\'TEST\')")