通过 Webview 将字符串变量从 Java 传递到 JavaScript(反之亦然)
Passing String variable from Java to JavaScript via Webview (vice versa)
我正在尝试制作一个应用程序,两个用户可以通过 webview 进行交互。我想获取一个从 javascript 到 Java 的字符串变量,以便我可以将它保存在我的 Sqlite 数据库中。(反之亦然)
正在从 JavaScript
调用 Java/Kotlin 代码
Android WebView 有一项名为 Javascript Interface 的功能,您应该寻找它。
它允许您从 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 操作,请确保使用 运行OnUiThread.
从 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\')")
我正在尝试制作一个应用程序,两个用户可以通过 webview 进行交互。我想获取一个从 javascript 到 Java 的字符串变量,以便我可以将它保存在我的 Sqlite 数据库中。(反之亦然)
正在从 JavaScript
调用 Java/Kotlin 代码Android WebView 有一项名为 Javascript Interface 的功能,您应该寻找它。
它允许您从 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 操作,请确保使用 运行OnUiThread.
从 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\')")