vat*_*ato 4 android webview html5-video
在我的网络视图中,视频无法全屏显示。当我按下 YouTube 视频上的全屏按钮时,chrome 控制台显示以下错误。
Uncaught (in promise) TypeError: fullscreen error
Run Code Online (Sandbox Code Playgroud)
系统
Android 10
Chrome version: 83.0.4103.106
Run Code Online (Sandbox Code Playgroud)
应用程序配置
compileSdkVersion 28
defaultConfig {
minSdkVersion 22
targetSdkVersion 28
}
webviewSettings.setJavaScriptEnabled(true);
webviewSettings.setDomStorageEnabled(true);
webviewSettings.setSupportMultipleWindows(false);
webviewSettings.setJavaScriptCanOpenWindowsAutomatically(false);
Run Code Online (Sandbox Code Playgroud)
该错误与此错误Bug 945287相关,但它应该在我的版本中修复。在网络视图中全屏显示嵌入视频是否需要任何其他设置?
我找到了一个答案,效果很好Playing HTML5 video on fullscreen in android webview,但对我来说,它在隐藏自定义视图后破坏了键盘。输入文本框不会触发键盘打开。下面的代码是全屏显示并解决我遇到的问题所需的全部内容。
主要活动:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
Android清单
<activity
android:name=".MainActivity"
android:configChanges="orientation|screenSize" />
Run Code Online (Sandbox Code Playgroud)