【问题标题】:Android webview content not loaded for hyperlink consists with hash未为超链接加载的 Android webview 内容包含哈希
【发布时间】:2021-03-04 09:03:13
【问题描述】:

我无法在 webview 中加载包含带有“#”哈希码的超链接的数据的内容。如下所示。

<a href="https://safetravel.changiairport.com/#/">here</a>

完整的网页内容是here

我是这样加载 webview 的。

binding.webView.loadData(
            getHtmlData(viewModel.blogPost.get()!!.formatContentData()),
            "text/html",
            "UTF-8")

@Parcelize
data class BlogPost(
        val title: String,
        ... remove for brebity 
    

) : Parcelable {

    fun formatContentData(): String {
        val justifyTag = "<html><body style='text-align:justify;'>%s</body></html>"
        content?.let {

            var data = it.replace("&lt;", "<").replace("&gt;", ">")

            val tagList = arrayOf("flightnode", "hotelnode ", "packagenode")

            for (tag in tagList) {
                val patternString = "(?is)<$tag[^>]+>.*?<\\/$tag>"
                val pattern = Pattern.compile(patternString)
                val matcher = pattern.matcher(data)
                println("\n\n" + matcher.find())
                data = matcher.replaceAll("")
            }

            return java.lang.String.format(Locale.US, justifyTag, data)
        }
        return ""
    }
}

如有任何帮助,我们将不胜感激。

【问题讨论】:

    标签: android html webview


    【解决方案1】:

    尝试改用loadDataWithBaseURL 方法。

    只要确保使用有效的 baseURL。我在这个答案中使用了“app:htmlPage24”:https://stackoverflow.com/a/7264081/11869925

    webView.loadDataWithBaseURL("app:htmlPage24", content, "text/html; charset=utf-8", "UTF-8", null)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-23
      • 2019-08-07
      • 2014-03-27
      • 2013-01-20
      相关资源
      最近更新 更多