首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

安卓视频WebView FullScreen不工作-未调用onShowCustomView()

()是一个关于安卓视频播放中全屏功能不起作用的问题。下面是对这个问题的完善且全面的答案:

安卓视频WebView FullScreen不工作的原因可能是未调用onShowCustomView()方法。onShowCustomView()方法是在视频播放进入全屏模式时被调用的,如果未调用该方法,就无法实现全屏功能。

解决这个问题的方法是在WebChromeClient的onShowCustomView()方法中添加相应的代码。具体步骤如下:

  1. 创建一个自定义的WebChromeClient类,并重写其中的onShowCustomView()方法。
  2. 在onShowCustomView()方法中,获取到当前的Activity对象,并将其转换为全屏模式。
  3. 设置全屏模式后,将视频播放的View添加到全屏的容器中。
  4. 最后,将全屏的容器添加到当前的Activity的ContentView中。

以下是一个示例代码:

代码语言:txt
复制
public class CustomWebChromeClient extends WebChromeClient {
    private View mCustomView;
    private Activity mActivity;

    public CustomWebChromeClient(Activity activity) {
        mActivity = activity;
    }

    @Override
    public void onShowCustomView(View view, CustomViewCallback callback) {
        if (mCustomView != null) {
            callback.onCustomViewHidden();
            return;
        }

        mCustomView = view;
        mCustomView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN);
        mActivity.setContentView(mCustomView);
    }

    @Override
    public void onHideCustomView() {
        if (mCustomView == null) {
            return;
        }

        mCustomView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_VISIBLE);
        mActivity.setContentView(mCustomView);
        mCustomView = null;
    }
}

使用这个自定义的WebChromeClient类,可以解决安卓视频WebView FullScreen不工作的问题。在WebView中设置这个自定义的WebChromeClient即可:

代码语言:txt
复制
WebView webView = findViewById(R.id.webView);
webView.setWebChromeClient(new CustomWebChromeClient(this));

这样,当视频播放进入全屏模式时,就会调用onShowCustomView()方法,实现全屏功能。

推荐的腾讯云相关产品:腾讯云移动直播(https://cloud.tencent.com/product/mlvb)

腾讯云移动直播是一款提供高清、低延迟、稳定可靠的移动直播服务的产品。它可以帮助开发者快速搭建移动直播平台,实现视频直播功能。腾讯云移动直播提供了丰富的功能和接口,支持多种视频格式和编码方式,适用于各种场景的移动直播需求。

希望以上信息对您有所帮助。如果还有其他问题,请随时提问。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

WebView 实现全屏播放视频的示例代码

最近要支持一个视频挑战的活动,要求 WebView 能全屏播放视频,现在把 Android 端实现的方法分享给大家。...要实现全屏需要给 WebView 设置 WebChromeClient 并覆写 onShowCustomView 和 onHideCustomView() 两方法: webView.setWebChromeClient...(new WebChromeClient() { @Override public void onShowCustomView(View view, CustomViewCallback callback...// 退出全屏播放,我们要把之前添加到界面上的视频播放界面移除 } }); 为了实现全屏的效果,需要将视频界面添加我们界面的最上层,有两种方式,一种是添加到 ContentView 中,核心代码如下...= null; @Override protected void onResume() { super.onResume(); // 如果之前处于全屏状态,重新进入后需要再次调用全屏

5.1K20

WebView中的视频全屏的相关操作

近期工作中,基本一直在用WebView,今天就把它整理下: WebView 顾名思义,就是放一个网页,一个看起来十分简单,可是用起来不是那么简单的控件。...首先你肯定要定义,初始化一个webview,事实上网上的样例非常多,我这里就简单的把一些WebView 中可能会用到的的非常重要的属性以及支持全屏播放视频该怎么实现的代码粘出来,直接放到项目中去即可了...全屏显示出来,那么视频就自己主动跑到FrameLayout这里面放了。...隐藏 webview.setVisibility(View.GONE); // 声明video,把之后的视频放到这里面去 FrameLayout video = (FrameLayout...super.shouldOverrideUrlLoading(view, url); //假设要下载页面中的游戏或者继续点击网页中的链接进入下一个网页的话,重写此方法下,不然就会跳到手机自带的浏览器了,而继续在你这个

1.6K20
  • H5案例分享:微信视频播放全屏问题(转)

    微信视频播放全屏问题    在ios和手机里的微信下播放视频时,会遇到不少问题,例如需要手动点击,视频才会播放,并且视频会跳出微信框,出现控制条,如果视频不是腾讯视频,播放完毕会出现腾讯视频的广告推送...解决办法:给video标签加一些属性,调用h5原生video。...换句话说,如果APP设置,你页面中加了这标签也无效,这也就是为什么手机WeChat 播放视频总是全屏,因为APP不支持playsinline,而ISO的WeChat却支持。...x5-video-player-type:启用同层H5播放器,就是在视频全屏的时候,div可以呈现在视频层上,也是WeChat版特有的属性。...至于为什么同层播放只对开放,是因为不能像ISO一样局域播放,默认的全屏会使得一些界面操作被阻拦,如果是全屏H5还好,但是做直播的话,诸如弹幕那样的功能就无法实现了,所以这时候同层播放的概念就解决了这个问题

    6.7K30

    视频H5 video最佳实践

    换句话说,如果APP设置,你页面中加了这标签也无效,这也就是为什么手机WeChat 播放视频总是全屏,因为APP不支持playsinline,而ISO的WeChat却支持。...: 启用同层H5播放器,就是在视频全屏的时候,div可以呈现在视频层上,也是WeChat版特有的属性。...至于为什么同层播放只对开放,是因为不能像ISO一样局域播放,默认的全屏会使得一些界面操作被阻拦,如果是全屏H5还好,但是做直播的话,诸如弹幕那样的功能就无法实现了,所以这时候同层播放的概念就解决了这个问题...微信浏览器是X5内核,一些属性标签比如playsinline就不支持,所以始终全屏。...0; } }) 隐藏播放控件 据说腾讯的android团队的x5内核团队放开了视频播放的限制,视频不一定调用它们那个备受诟病的视频播放器了,x5-video-player-type="h5"属性这个属性好像就有点那个意思

    4.5K30

    WebView 的一切都在这儿

    会先通过WebChromeClient.onGeolocationPermissionsShowPrompt申请授权 注:从API24开始,仅支持安全源(https)的请求,非安全源的请求将自动拒绝且不调用...) Fullscreen API https://developer.mozilla.org/zh-CN/docs/DOM/Using_fullscreen_mode 当H5请求全屏时,会回调 WebChromeClient.onShowCustomView...播放视频需要开启硬件加速 2.页面布局 3.处理全屏回调 4.设置全屏,切换屏幕方向 12 内存泄漏 直接 new WebView 并传入 application context 代替在 XML 里面声明以防止...销毁 WebView 参考 https://developer.android.com/reference/android/webkit/package-summary.html Fullscreen...API 全屏显示网页 http://calefy.org/2012/06/03/fullscreen-web-page-width-fullscreen-api.html WebView实现全屏播放的一种方法

    2.1K60

    WebView 做一个“套壳”应用

    本文主要讲解如何制作一个原生的“壳”来加载我们的 H5 网页,最终实现一个简单的 Hybrid App(套壳应用)。...文中创建的示例项目已上传至码云,点击文章底部“阅读原文”即可获取 正文 本文涉及到复杂的 Android 与 Java 知识,小朋友不需要在家长的陪同下也能观看 ? 1....如果没有安装虚拟机的话,需要点击窗口顶部菜单栏的 [ Tools -> AVD Manager ] 进入 AVD 管理器安装虚拟机(模拟器)。...(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN...android:usesCleartextTraffic="true"> 可以看到我本地的 Cocos Creator 项目已经成功在WebView 上跑起来啦~ ? ?

    12.1K13

    android刘海屏适配(刘海屏或圆角适配)

    P版本也就是刚发布的9.0 其中就加入了刘海屏相关的API。其相关行为与功能变更也是非常多的,从其变更的趋势及功能来看,google在进一步的收紧权限。...为保障用户的使用体验,应用市场已在3月启动Android P版本应用适配检测工作, 针对做适配的应用开发者陆续进行邮件通知。...针对适配或在Android P版本体验欠佳的应用, 应用市场将在Android P版本机型上采取屏蔽或推荐更新策略, 可能会对您的推广、用户口碑及品牌产生影响。...这样就导致我们不得不去适配P了。 在收到邮件后,查阅谷歌官方的资料,更新SDK。其中UI最大的改变就是需要适配刘海屏。...其他关于全屏播放视频大家可以自己试试。欢迎大家留言与讨论!!!

    2.1K10

    APP的webview碰到的一些坑

    Webview首先加载模板,然后JS调用原生接口请求动态内容。 APP获取到资讯后调用JS接口,然后进行页面渲染。 这是修改后的执行流程。目前加载的过程提升了好几倍不止。 如果有机会会发出对比视频。...对于字符串中存在单引号,不能正确传值 原因在于调用js方法的方式。...在中,调用的方式为: webview.loadUrl("javascript:returnData('"+content+"')") 比如...具体的解决方法我已经在这里 应用调用JS方法接收返回数据 因为的原因,不知道为啥不能接收数组,所以我将其转为json字符串。但是说左右会多出两个双引号。...总结 其实我做这一套解决方案的时候,不仅仅是和配合,还有跟IOS配合,有时候总是会出现可以,IOS不行,或者反过来IOS可以,不行的情况。 对于这种情况,需要学会具体分析。

    1.7K20

    应用常见的几种应对恶意攻击的解决方案

    IT 大咖说(微信id:itdakashuo)作为独家视频合作方,经主办方和讲者审阅授权发布。...阅读字数:3315 | 9分钟阅读 摘要 本文分为三个部分,第一个部分会介绍一下的应用现状,第二部分是的常见问题(偏漏洞方面),最后是隐私安全问题。...应用现状 首先我们来看一下官方发布的数据,国家互联网应急响应中心对所有的移动平台进行统计后,发现平台的用户是最容易受到攻击的,而且恶意的程序高达99.9%。...Android应用常见问题及解决方案 接下来会给大家介绍下我们今年发现了一些漏洞,其实说漏洞还是有些恰当,它更像是四个攻击面,包括组件问题、url绕过、中间人攻击、Webview漏洞,尽管这几个问题看起来非常简单...它们主要造成了两个问题,一个是拒绝服务,一个是调用授权界面(甚至后门)。 URL绕过问题 URl绕过问题也只能说是攻击面,不能说是漏洞。

    1K20

    H5直播避坑指南

    ,这中情况下就适合直接选中video并调用video.play来播放视频 但是这种情况下也需要webview的支持,如在手Q下可以做到直接调用,在微信下因为不允许视频直接播放,则必须通过用户的真实操作来触发调用...页面内联播放问题 在iOS Safari和一些的一些浏览器下播放视频的时候,不能在h5页面中播放视频,系统会自动接管视频 如果需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline...视频的高度问题 在下,一些浏览器如QQ浏览器和UC浏览器,系统会把视频的层级调到最高,所以如果想在页面上显示dom元素,都会被视频盖住,单纯的设置该dom的z-index是无效的,如图所示 ?...但是在测试中发现,一些机不支持该属性,如小米手机,所以需要在调用的时候进行一下判断 var player = $('#player')[0];if (player.webkitSupportsFullscreen...在拉起键盘输入弹幕的时候,键盘不受控制还是竖屏显示了 如果页面涉及与原生组件的交互,那么这种方案是一种很可行且兼容性比较好的方案 2.用户在点击全屏时,通过js api来控制webview旋转横屏

    10.9K151

    H5直播避坑指南

    ,这中情况下就适合直接选中video并调用video.play来播放视频 但是这种情况下也需要webview的支持,如在手Q下可以做到直接调用,在微信下因为不允许视频直接播放,则必须通过用户的真实操作来触发调用...页面内联播放问题 在iOS Safari和一些的一些浏览器下播放视频的时候,不能在h5页面中播放视频,系统会自动接管视频 如果需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline...视频的高度问题 在下,一些浏览器如QQ浏览器和UC浏览器,系统会把视频的层级调到最高,所以如果想在页面上显示dom元素,都会被视频盖住,单纯的设置该dom的z-index是无效的,如图所示 [1498530055801...但是在测试中发现,一些机不支持该属性,如小米手机,所以需要在调用的时候进行一下判断 var player = $('#player')[0];if (player.webkitSupportsFullscreen...如果发现在x5内核下无法使用伪全屏而被浏览器接管,可以咨询下x5同事为你的域名开启白名单,接管你域名下的视频播放 总结: 在经历过各种优化和调整后,我们可以在h5直播页做到看直播,看弹幕,发弹幕,发送礼物

    5.4K130

    H5 直播避坑指南

    ,这中情况下就适合直接选中video并调用video.play来播放视频 但是这种情况下也需要webview的支持,如在手Q下可以做到直接调用,在微信下因为不允许视频直接播放,则必须通过用户的真实操作来触发调用...页面内联播放问题 在iOS Safari和一些的一些浏览器下播放视频的时候,不能在h5页面中播放视频,系统会自动接管视频 如果需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline...视频的高度问题 在下,一些浏览器如QQ浏览器和UC浏览器,系统会把视频的层级调到最高,所以如果想在页面上显示dom元素,都会被视频盖住,单纯的设置该dom的z-index是无效的,如图所示 ?...但是在测试中发现,一些机不支持该属性,如小米手机,所以需要在调用的时候进行一下判断 var player = $('#player')[0];if (player.webkitSupportsFullscreen...在拉起键盘输入弹幕的时候,键盘不受控制还是竖屏显示了 如果页面涉及与原生组件的交互,那么这种方案是一种很可行且兼容性比较好的方案 2.用户在点击全屏时,通过js api来控制webview旋转横屏

    2.8K90

    边看chromium的代码边想骂人……

    一开始搞了个牛逼的架构,在4.4上把以前webkit团队的简单版替换掉了 结果发现性能大不如简单版的。 简单版本的思路其实很赞, 主要就是分块渲染,然后录制,回放 这个模式很屌。...据说chrome自己的团队接手webview后,赶紧把团队的经验学过来(此处乃听说,求证)。 然后移植到chrome上搞了个更加复杂的架构。 这才把性能追上来。...chromium团队接手后,大重构先, 结果第一版搞的架构太复杂,还不如team当年的效率高 然后又继续重构,弄了个更复杂的架构 最后性能确实不错了,比team封装的简化版webkit要好些...还有,让我产生了幻觉,觉得写C++代码的风格是这样的: 类直接访问, 全部加到TypeList,必须用元编程使用常值去索引, 所有参数和返回值上各种类型推演、enable_if。...4.4后就不维护了,统一叫chromium for android webview

    81840

    HTML5 Audio & Video - 兼容性总结(一)

    工作中的总结和记录,第一次写,有问题烦请指出,会持续记录更新......oAudio.addEventListener('canplay', () => { _tihs.isLoadaudio = false; }, { once: true } )} 建议添加...loading 效果,因为没有准确的事件监听可以移除,否则只能加上不能移除(支持 loadstart 和 loadeddata,不支持 canplay) 5、关于自动播放的问题:需要触发一次才可播放...video class="qvideo" id="qvideo-wrap" playsinline webkit-playsinline x5-playsinline> 注:x5内核-下不能添加...手机上,视频层级最高,其它弹窗等会被遮挡; 可在弹窗等出现的时候,视频高度设置为0; 本文转自 https://juejin.cn/post/6844903839825395719,如有侵权,请联系删除

    1.5K20
    领券