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