简体   繁体   English

通过 Webview 将字符串变量从 Java 传递到 JavaScript(反之亦然)

[英]Passing String variable from Java to JavaScript via Webview (vice versa)

I am trying to make an app where two users can interact through webview.我正在尝试制作一个应用程序,两个用户可以通过 webview 进行交互。 I want to get a String variable from javascript to Java so that I can save it in my Sqlite database.(And vice versa)我想从 javascript 到 Java 获取一个字符串变量,以便我可以将它保存在我的 Sqlite 数据库中。(反之亦然)

Calling Java/Kotlin code from JavaScript从 JavaScript 调用 Java/Kotlin 代码

There's a feature of Android WebView called Javascript Interface which is what you should look for. Android WebView 有一个称为Javascript 接口的功能,这是您应该寻找的。

It allows you to run your java/kotlin code from your javascript code.它允许您从 javascript 代码运行您的 java/kotlin 代码。

You can define an interface by您可以通过以下方式定义接口

val webView: WebView = findViewById(R.id.webview)
webView.addJavascriptInterface(WebAppInterface(this), "Android")

Here, WebAppInterface defines the methods which you want to be called from javascript.在这里, 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 " here is an interface added to your webview and can be used in your javascript code to call Android methods. Android ” 这是一个添加到您的 webview 的接口,可用于您的 javascript 代码调用 ZE84E30B9390CDB46DDB78 方法。

Once this is done, you can call the methods from your javascript,完成后,您可以从 javascript 调用方法,

<input type="button" value="Say hello" onClick="showAndroidToast('Hello Android!')" />
<script type="text/javascript">
function showAndroidToast(toast) {
    Android.showToast(toast);
}
</script>

Keep in mind that the interface callbacks are not always called in main thread.请记住,接口回调并不总是在主线程中调用。 So, if you want to perform any UI operations, make sure you use runOnUiThread .因此,如果您想执行任何 UI 操作,请确保使用runOnUiThread

Calling JavaScript function from Java/Kotlin code从 Java/Kotlin 代码调用 JavaScript function

There's a feature of Android WebView called Evaluate Javascript for API 19+ to call your javascript functions from java/kotlin code. There's a feature of Android WebView called Evaluate Javascript for API 19+ to call your javascript functions from java/kotlin code.

For example, for the following javascript:例如,对于以下 javascript:

<script type="text/javascript">
function printName(name) {
    console.log(name); 
}
</script>

You can write this code to call this JS function:你可以编写这段代码来调用这个JS function:

yourWebview.evaluateJavascript("printName(\'TEST\')")

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM