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

Cordova 9.0安卓端HTML5 Video仅首次全屏可用问题求助

Cordova 9.0 Android端HTML5 Video全屏异常问题

问题现象

  • 应用启动后首次点击全屏按钮可正常进入全屏
  • 后续每次点击全屏按钮仅出现短暂闪屏,无法进入全屏
  • 锁屏解锁或回到主屏幕再重启应用后,视频会显示为全屏
  • 强制关闭并重新打开应用后,会回到首次正常的循环

已知信息

  • Chrome开发者工具显示:正常场景下视频会被分配#top-layer,异常场景则不会
  • 异常场景下,下拉通知栏也无法让视频全屏
  • 调用video_element.requestFullScreen()和video_element.webkitRequestFullScreen()无报错
  • 全屏按钮在任何场景下都不会被禁用
  • 尝试过调整setSystemUiVisibility配置、修改CordovaActivity.java生命周期、禁用Cordova“fullscreen”偏好,均无效
  • 该问题仅出现在Chrome 74及以上版本
  • 仅保留最基础的HTML视频标签代码,问题依然存在

最小复现代码

<html>
<head>
</head>
<body>
<video id="video1" style="width:600px;max-width:100%;" controls="">
<source src="https://www.w3schools.com/html/mov_bbb.mp4" type="video/mp4">
</video>
</body>
</html>

可行解决方案尝试

1. 调整Cordova WebView配置

在config.xml中添加以下配置,强制WebView使用兼容模式:

<preference name="WebViewEngine" value="system" />
<preference name="MediaPlaybackRequiresUserAction" value="false" />

同时在CordovaActivity.java的onCreate方法中补充WebView设置:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
    webView.getSettings().setAllowContentAccess(true);
    webView.getSettings().setAllowFileAccess(true);
}

2. 手动重置全屏状态

通过监听全屏变化事件,在退出全屏时强制重置视频元素状态,避免残留异常:

const video = document.getElementById('video1');
let isFullscreen = false;

// 监听全屏状态变化
['fullscreenchange', 'webkitfullscreenchange'].forEach(event => {
    video.addEventListener(event, () => {
        isFullscreen = !isFullscreen;
        if (!isFullscreen) {
            // 强制重置视频尺寸,清除异常状态
            video.style.width = '100%';
            setTimeout(() => video.style.width = '', 100);
        }
    });
});

// 替换原生全屏按钮事件
document.querySelector('video::-webkit-media-controls-fullscreen-button')?.addEventListener('click', (e) => {
    e.preventDefault();
    if (!isFullscreen) {
        video.requestFullscreen().catch(console.log);
    } else {
        document.exitFullscreen();
    }
});

3. 降级Cordova Android插件版本

将cordova-android插件降级到8.1.x版本,该版本对Chrome 74+的兼容性问题处理更完善:

cordova platform remove android
cordova platform add android@8.1.0

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 14:25:15