Android WebView 不加载页面而不附加到 xml

Posted

技术标签:

【中文标题】Android WebView 不加载页面而不附加到 xml【英文标题】:Android WebView does not load a page without attaching to 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 布局文件?

【问题讨论】:

【参考方案1】:

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

【讨论】:

以上是关于Android WebView 不加载页面而不附加到 xml的主要内容,如果未能解决你的问题,请参考以下文章

Android:如何在webview中呈现html而不显示webview

Android webview加载的页面怎样调试JS

Android webview 不加载主页但加载所有其他页面

Android webview加载的页面怎样调试JS

在Android中获取html的textarea的值

Android中webview加载页面有重叠,是怎么回事