我想调用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)