【发布时间】:2019-11-15 20:39:03
【问题描述】:
使用 JS 接口处理 Kotlin WebView,我的 Web 应用程序需要从本机端检测 KeyEvent.KEYCODE_BACK 事件,以便在呈现时关闭 Web 应用程序对话框。如果对话框被关闭,我应该在本机端什么都不做(返回 true 到 super),否则我需要完成 web 视图活动(返回 false 到 super)。为了抓住我的意图,请阅读下面的代码,我在我的自定义 WebView 上实现了作为线索,
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean {
if (event.action == KeyEvent.ACTION_DOWN) {
when (keyCode) {
KeyEvent.KEYCODE_BACK -> {
this.evaluateJavascript("onDeviceBackPressed();", ValueCallback {
if (it == "1") {
// "Web app consumed onDeviceBackPressed event!"
} else {
// "Web app did not consume onDeviceBackPressed event!"
// super.onKeyDown(keyCode, event) won't work
}
})
// I am required to make the return call wait
// return true/false base on status returned by js func
}
}
}
return super.onKeyDown(keyCode, event)
}
但我知道异步等待超级调用是不可能的。我该如何以其他方式处理这种情况?
【问题讨论】:
标签: javascript android kotlin web-applications webview