Android WebView视频全屏不起作用

4
在我的webview中,视频无法显示全屏。当我按下YouTube视频上的全屏按钮时,Chrome控制台显示以下错误。
Uncaught (in promise) TypeError: fullscreen error

控制台错误

系统

Android 10
Chrome version: 83.0.4103.106

应用程序配置

compileSdkVersion 28
defaultConfig {
    minSdkVersion 22
    targetSdkVersion 28
}

webviewSettings.setJavaScriptEnabled(true);
webviewSettings.setDomStorageEnabled(true);
webviewSettings.setSupportMultipleWindows(false);
webviewSettings.setJavaScriptCanOpenWindowsAutomatically(false);

错误与此错误相关:Bug 945287,但应该在我的版本中得到修复。是否还需要其他设置才能在 webview 中全屏显示嵌入式视频?

2
尝试这个 https://dev59.com/pGUo5IYBdhLWcg3wxB7T#56186877 - Manohar
2个回答

7
我找到了一个解决方案,对于这个问题非常有效 在Android WebView中全屏播放HTML5视频,但是在隐藏自定义视图后,它破坏了键盘。输入文本框无法触发键盘打开。下面的代码是您需要做的所有全屏和修复我遇到的问题。

主要活动:

import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.FrameLayout;

public class MainActivity extends AppCompatActivity
{
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        webView = findViewById(R.id.webView);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.setWebChromeClient(new MyChrome());
        webView.setWebViewClient(new WebViewClient());
        webView.loadUrl("http://www.google.com");
     }    
private class MyChrome extends WebChromeClient
{
    View fullscreen = null;

    @Override
    public void onHideCustomView()
    {
        fullscreen.setVisibility(View.GONE);
        webView.setVisibility(View.VISIBLE);
    }
    @Override
    public void onShowCustomView(View view, CustomViewCallback callback)
    {
        webView.setVisibility(View.GONE);

        if(fullscreen != null)
        {
            ((FrameLayout)getWindow().getDecorView()).removeView(fullscreen);
        }

        fullscreen = view;
        ((FrameLayout)getWindow().getDecorView()).addView(fullscreen, new FrameLayout.LayoutParams(-1, -1));
        fullscreen.setVisibility(View.VISIBLE);
    }
}

Android清单文件

<activity
  android:name=".MainActivity"
  android:configChanges="orientation|screenSize" />

对于那些在使用返回按钮时遇到问题的人——当全屏视频仍在播放而网页视图已关闭时,请不要忘记在onShowCustomView中添加view.requestFocus()。 - bene25

4

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接