You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android WebView无法播放视频问题及批量修复方案

问题描述

原本正常运行的WebView视频初始化函数,在项目更新后无法播放视频,仅显示iframe字符串内容。排查发现传入的video参数是经过HTML转义的字符串,手动转义回正常HTML即可播放。现有大量页面使用此类字符串,需要一次性修复。

原函数代码:

private fun WebView.initVideo(video: String) {
    WebViewVideoPlayerUtils.addCookie(video, this)
    with(settings) {
        javaScriptEnabled = true
        domStorageEnabled = true
        cacheMode = WebSettings.LOAD_NO_CACHE
        builtInZoomControls = true
        allowFileAccess = true
        loadWithOverviewMode = true
        useWideViewPort = true
    }
    loadDataWithBaseURL(
        null,
        video,
        "text/html",
        "utf-8",
        null
    )
}

传入的转义后字符串示例:

<iframe width="853" height="480" src="https://www.youtube.com/embed/_iATsZKqYF0" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

AndroidManifest.xml已配置必要权限、android:hardwareAccelerated="true"和android:usesCleartextTraffic="true"。

解决方案

核心是在加载前对HTML转义的字符串进行反转义处理,直接修改initVideo函数即可一次性修复所有调用该函数的页面,无需逐个修改页面数据。

修复后的函数代码

import android.text.Html

private fun WebView.initVideo(video: String) {
    WebViewVideoPlayerUtils.addCookie(video, this)
    with(settings) {
        javaScriptEnabled = true
        domStorageEnabled = true
        cacheMode = WebSettings.LOAD_NO_CACHE
        builtInZoomControls = true
        allowFileAccess = true
        loadWithOverviewMode = true
        useWideViewPort = true
    }
    // 对转义的HTML字符串进行反转义
    val unescapedVideo = Html.fromHtml(video, Html.FROM_HTML_MODE_LEGACY).toString()
    loadDataWithBaseURL(
        null,
        unescapedVideo,
        "text/html",
        "utf-8",
        null
    )
}

关键说明

  • 利用Android系统APIHtml.fromHtml()完成HTML反转义:Html.FROM_HTML_MODE_LEGACY适配Android 7.0及以下版本,若项目最低SDK版本高于24(Android 7.0),可替换为Html.FROM_HTML_MODE_COMPACT。
  • 该修改仅需调整initVideo函数,所有调用此函数的页面会自动处理转义字符串,无需修改其他业务逻辑。
  • 若需兼容特殊场景,可先判断字符串是否包含HTML转义标记(如<、")再执行反转义,但全局直接处理已能覆盖绝大多数情况。

内容的提问来源于stack exchange,提问作者Helios

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 06:50:15