如何从 JavaScript 调用 Kotlin 函数
How to call a Kotlin function from JavaScript
我正在尝试使用 Kotlin
function
使用 [=33] 生成的随机电子邮件填充位于 WebView
(在 Android)内的 TextView
=] 但没有找到任何解决方案。
我的 Kotlin
function
用于生成随机电子邮件地址
fun getSaltString(): String? {
val SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
val salt = StringBuilder()
val rnd = Random()
while (salt.length < 7) { // length of the random string.
val index = (rnd.nextFloat() * SALTCHARS.length) as Int
salt.append(SALTCHARS[index])
}
return salt.toString()
}
这是使用 Kotlin getSaltString()+"@gmail.com"
对上述函数的调用,但我不知道如何从 JavaScript
?
调用它
到目前为止我的 JavaScript
通话
myWebView.loadUrl("javascript:(function(){document.getElementById(\"user_email_login\").value = \"I don't know how to call @gmail.com\";\n})()");
如有任何帮助,我们将不胜感激。提前致谢:)
我没有时间对此进行测试,但希望它是正确的。您需要一个 class 包含您希望能够从 JS 调用的函数。此 class 的一个实例将绑定到您的 WebView。 class 中的每个函数前面都需要注解 @JavascriptInterface
。
我把你函数的内容改得更简洁了,作为提示。
class WebAppInterface {
@JavascriptInterface
fun getSaltString(): String = buildString {
val saltChars = ('A'..'Z').toList() + ('0'..'9').toList()
repeat(7) {
append(saltChars.random())
}
}
}
然后你用 webview 注册这个 class 的一个实例。您在此处传递的任何字符串名称都将是您在 JS 中预先调用的名称:
myWebView.addJavascriptInterface(WebAppInterface(), "Android")
myWebView.loadUrl("javascript:(function(){document.getElementById(\"user_email_login\").value = Android.getSaltString() + \"@gmail.com\";\n})()");
我找到了解决方案,至少对我来说非常简单。
我需要在Kotlin Function
.
随机生成的(AndroidWebView)中填写我的Email TextBox
我的随机文本生成函数
fun getSaltString(): String? {
val SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
val salt = StringBuilder()
val rnd = Random()
while (salt.length < 7) { // length of the random string.
val index = (rnd.nextFloat() * SALTCHARS.length).toInt()
salt.append(SALTCHARS[index])
}
return salt.toString()
}
现在我声明 two variables
来保存我的随机电子邮件的值。
val temporaryEmailaddress: String? = getSaltString()
val EmailAddressFinal: String? = "$temporaryEmailaddress@gmail.com"
最后,对 EmailAddressFinal
变量的简单调用就完成了。 :)
myWebView.loadUrl("javascript:(function(){document.getElementById(\"user_email_login\").value = \"$EmailAddressFinal\";\n})()");
我正在尝试使用 Kotlin
function
使用 [=33] 生成的随机电子邮件填充位于 WebView
(在 Android)内的 TextView
=] 但没有找到任何解决方案。
我的 Kotlin
function
用于生成随机电子邮件地址
fun getSaltString(): String? {
val SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
val salt = StringBuilder()
val rnd = Random()
while (salt.length < 7) { // length of the random string.
val index = (rnd.nextFloat() * SALTCHARS.length) as Int
salt.append(SALTCHARS[index])
}
return salt.toString()
}
这是使用 Kotlin getSaltString()+"@gmail.com"
对上述函数的调用,但我不知道如何从 JavaScript
?
到目前为止我的 JavaScript
通话
myWebView.loadUrl("javascript:(function(){document.getElementById(\"user_email_login\").value = \"I don't know how to call @gmail.com\";\n})()");
如有任何帮助,我们将不胜感激。提前致谢:)
我没有时间对此进行测试,但希望它是正确的。您需要一个 class 包含您希望能够从 JS 调用的函数。此 class 的一个实例将绑定到您的 WebView。 class 中的每个函数前面都需要注解 @JavascriptInterface
。
我把你函数的内容改得更简洁了,作为提示。
class WebAppInterface {
@JavascriptInterface
fun getSaltString(): String = buildString {
val saltChars = ('A'..'Z').toList() + ('0'..'9').toList()
repeat(7) {
append(saltChars.random())
}
}
}
然后你用 webview 注册这个 class 的一个实例。您在此处传递的任何字符串名称都将是您在 JS 中预先调用的名称:
myWebView.addJavascriptInterface(WebAppInterface(), "Android")
myWebView.loadUrl("javascript:(function(){document.getElementById(\"user_email_login\").value = Android.getSaltString() + \"@gmail.com\";\n})()");
我找到了解决方案,至少对我来说非常简单。
我需要在Kotlin Function
.
TextBox
我的随机文本生成函数
fun getSaltString(): String? {
val SALTCHARS = "ABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
val salt = StringBuilder()
val rnd = Random()
while (salt.length < 7) { // length of the random string.
val index = (rnd.nextFloat() * SALTCHARS.length).toInt()
salt.append(SALTCHARS[index])
}
return salt.toString()
}
现在我声明 two variables
来保存我的随机电子邮件的值。
val temporaryEmailaddress: String? = getSaltString()
val EmailAddressFinal: String? = "$temporaryEmailaddress@gmail.com"
最后,对 EmailAddressFinal
变量的简单调用就完成了。 :)
myWebView.loadUrl("javascript:(function(){document.getElementById(\"user_email_login\").value = \"$EmailAddressFinal\";\n})()");