0

我想调用javascript函数,WebView但到目前为止它不起作用。我尝试了多种语法变体,但在网络上根本没有调用它。postMessage即使网络正在调用它,我的应用程序中也不会调用函数。

代码:

inner class WebJsInterface {
        @JavascriptInterface
        fun postMessage(jsonPayload: String){
            App.log("WebFragment: postMessage")
            //code
        }

        @JavascriptInterface
        fun sendMessage(jsonPayload: String){
            val jsFun = "javascript:window.sendMessage(${jsonPayload});"
            App.log("WebFragment: sendMessage: $jsFun")
            webView.evaluateJavascript(jsFun, null)
        }
}


...
jsInterface = WebJsInterface()
webView.settings.apply {
        javaScriptEnabled = true
        setSupportMultipleWindows(true)
        displayZoomControls = false
        javaScriptCanOpenWindowsAutomatically = true
    }

    webView.addJavascriptInterface(jsInterface, JS_INTERFACE)

    webView.webViewClient = object: WebViewClient(){
        @Suppress("OverridingDeprecatedMember")
        override fun shouldOverrideUrlLoading(view: WebView, url: String): Boolean {
            App.log("WebFragment: shouldOverrideUrlLoading: $url")
            view.loadUrl(url)
            return false
        }

        override fun shouldInterceptRequest(
                view: WebView?,
                request: WebResourceRequest?
        ): WebResourceResponse? {
            App.log("WebFragment: shouldInterceptRequest: ${request?.requestHeaders.toString()}")
            return super.shouldInterceptRequest(view, request)
        }

        override fun onPageFinished(view: WebView?, url: String?) {
            setProgress(false)
            onSuccess.invoke()
        }
    }

    webView.loadUrl(url)
4

0 回答 0