【问题标题】:In Android Webview window open work just one time在 Android Webview 窗口中打开工作只需一次
【发布时间】:2019-02-16 00:14:01
【问题描述】:

我的网站(使用 laravel)在此代码上调用 window.open 方法

window.open('My_URL','_blank');

我的 Android Webview 在对话框中打开新窗口。代码是

override fun onCreateWindow(view:WebView, isDialog:Boolean,
    isUserGesture:Boolean, resultMsg:Message):Boolean {

    // set dialog webview
    val dialog = Dialog(context)
    dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)
    dialog.setContentView(R.layout.activity_webview)

    val newWebView = dialog.findViewById<WebView>(R.id.WebView)

    newWebView.settings.javaScriptEnabled = true
    newWebView.loadUrl(view?.url)

    // open dialog full screen
    val window = dialog.window
    val wlp : WindowManager.LayoutParams = window.attributes
    wlp.gravity = Gravity.CENTER
    wlp.flags = WindowManager.LayoutParams.FLAG_BLUR_BEHIND
    window.attributes = wlp
    dialog.window.setLayout(WindowManager.LayoutParams.MATCH_PARENT,
        WindowManager.LayoutParams.MATCH_PARENT)
    dialog.show()
    (resultMsg.obj as WebView.WebViewTransport).setWebView(newWebView)
    resultMsg.sendToTarget()

    newWebView.setWebViewClient(object: WebViewClient() {

    })

    newWebView.setWebChromeClient(object:WebChromeClient() {
        override fun onCloseWindow(window:WebView) {
            dialog.dismiss()
            window.destroy()
            newWebView.destroy()
            //webview.removeView(newWebView)
        }
    })

    return true
}

一次就成功了。

我该怎么办?

【问题讨论】:

    标签: android laravel webview kotlin


    【解决方案1】:

    不确定它是否对您有帮助,但据我所知,android 应用程序应该提供来自javascript 的打开和关闭窗口请求的处理。我的意思是它确实可以开箱即用,但通常不是预期/需要的。

    可以将单独的 web window 显示为对话框,但据我所知,对话框不能堆叠并出现在彼此之上。这种方法适合您只需要打开(然后关闭)一个单独的window 的情况。请阅读有关对话框的更多信息here

    我的建议是在每个 window.open() 请求上显示单独的 WebView。请查看此answer,其中解决了类似的解决方案。在您的情况下(可能打开任意数量的窗口),您可以使用WebViews 中的LinkedList,在window.open() 上推送新的,在window.close 上弹出顶部的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-12-26
      相关资源
      最近更新 更多