Вызов Java / Kotlin код из JavaScript
Есть функция Android WebView, называемая Javascript Интерфейс , что вам и нужно ищите.
Это позволяет вам запускать код java / kotlin из кода javascript.
Вы можете определить интерфейс с помощью
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» вот интерфейс, добавленный в ваш веб-просмотр и может использоваться в вашем коде javascript для вызова Android методов.
Как только это будет сделано, вы можете вызывать методы из ваших javascript,
<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
Android.showToast(toast);
}
</script>
Сохранить в помните, что обратные вызовы интерфейса не всегда вызываются в основном потоке. Итак, если вы хотите выполнить какие-либо операции пользовательского интерфейса, убедитесь, что вы используете runOnUiThread .
Вызов функции JavaScript из Java / Kotlin код
В Android WebView есть функция Evaluate Javascript для API 19+ для вызова ваших javascript функций из кода java / kotlin.
Например, для следующих javascript:
<script type="text/javascript">
function printName(name) {
console.log(name);
}
</script>
Вы можете написать этот код для вызова этой JS функции:
yourWebview.evaluateJavascript("printName(\'TEST\')")