【问题标题】:Android WebView does not load a page without attaching to xmlAndroid WebView 不加载页面而不附加到 xml
【发布时间】:2022-01-05 01:08:46
【问题描述】:

我需要在后台加载动态生成的页面,然后获取结果html。我会为此使用 WebView,但如果不附加到 xml 布局,它就不起作用。 此示例不起作用:

val browser = WebView(this)
browser.visibility = View.INVISIBLE
browser.settings.javaScriptEnabled = true
browser.settings.blockNetworkImage = false
browser.settings.domStorageEnabled = true
browser.settings.cacheMode = WebSettings.LOAD_NO_CACHE
browser.settings.loadsImagesAutomatically = true
browser.webViewClient = object : WebViewClient() {
       override fun onPageFinished(view: WebView, url: String) {
           Log.e("page", "finished")
           val javascript = "javascript:window.JSBridge.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"
           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                browser.evaluateJavascript(javascript, null)
           } else {
                browser.loadUrl(javascript)
           }
        }
    }
browser.loadUrl("https://github.com")

但这有效:

val browser = findViewById<WebView>(R.id.browser)
browser.visibility = View.INVISIBLE
browser.settings.javaScriptEnabled = true
browser.settings.blockNetworkImage = false
browser.settings.domStorageEnabled = true
browser.settings.cacheMode = WebSettings.LOAD_NO_CACHE
browser.settings.loadsImagesAutomatically = true
browser.webViewClient = object : WebViewClient() {
       override fun onPageFinished(view: WebView, url: String) {
           Log.e("page", "finished")
           val javascript = "javascript:window.JSBridge.showHTML('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>');"
           if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
                browser.evaluateJavascript(javascript, null)
           } else {
                browser.loadUrl(javascript)
           }
        }
    }
browser.loadUrl("https://github.com")

那么,有没有什么方法可以通过 WebView 加载页面而不附加到 xml 布局文件?

【问题讨论】:

    标签: android kotlin webview


    【解决方案1】:

    我找到了解决方案,我必须在 Application 类中创建 WebView,使用应用程序上下文,然后将其用作单例。这样就解决了问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-13
      • 1970-01-01
      • 2021-12-02
      • 1970-01-01
      • 2018-08-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多