javascript - 使用 Webview 将对象从 Javascript 发送到 Kotlin

标签 javascript android kotlin android-webview javascript-injection

我已经使用 WebView 组件加载了一个网页并添加了一个 JavascriptInterface。请检查下面的代码,

val webview = WebView(this)
setContentView(webview)
webview.settings.javaScriptEnabled = true
webview.loadUrl(HOME_PAGE_URL)
webview.addJavascriptInterface(JavascriptInterface(),”javascript_bridge”)

当我使用 window.javascript_bridge.showToast(“Information Saved”);

从 Javascript 调用调用时
private inner class JavascriptInterface
{
    @android.webkit.JavascriptInterface
    fun showToast(text: String?)
    {
        Log.d("WEBVIEW", text);
    }
}

我可以毫不费力地将方法从 Javascript 调用到 Kotlin。

但现在我想将对象从 Javascript 传递到 Kotlin,如下所示,

var info = {
    message: “Information Saved”,
    ID: 123456
}

当我使用 window.javascript_bridge.showToast(info);

从 Javascript 调用调用时

我试图将数据类型更改为Any,但是从Javascript 传递的值为空

private inner class JavascriptInterface
{
    @android.webkit.JavascriptInterface
    fun showToast(text: Any?)
    {
       Log.d("WEBVIEW", text.toString());
    }
}

最佳答案

据我所知,javaScript 接口(interface)方法只接受原始类型的数据作为参数(如本 question 所讨论)。 如果你仍然想实现它,你可以在 javaScript 中序列化对象(例如,JSON 格式),然后在 Java 中反序列化它。 希望对您有所帮助:)

关于javascript - 使用 Webview 将对象从 Javascript 发送到 Kotlin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57881025/

相关文章:

android - java.lang.InknownClassChangeError,将kotlin gradle插件升级到1.5.20后

android - Kotlin/Native 将 android 日志导入 android 共享代码模块时遇到问题

android - Kotlin 与 Android : Base classes and Kotlin Android Extensions

javascript - 我如何在 Next.js 中删除 ID 为 ="__next"的 div

javascript - 用于 cordova 插件的 Typescript 到 Javascript

android - 在 Android Webkit 中隐藏 URL 栏

java - 访问 fragment View 时偶尔出现 NPE

c# - 如何使用 javascript 添加 @html 标签?

javascript - 如何将实例函数传递给外部函数?

android - errorBody() 应为 BEGIN_ARRAY