在WebView中加载YouTubevideo时,全屏选项不可用

我在Android应用程序中使用webview工作了很多次。 但是这次我把加载YouTubevideojoin到WebView中有一个奇怪的问题。

请参阅这是在Chrome浏览器中加载的YouTubevideo的屏幕截图,其中包含全屏选项。

在这里输入图像说明

现在,下面是我的应用程序的屏幕截图,我在webview中加载了相同的video。 但它没有全屏幕选项。

在这里输入图像说明

您可以看到两个图像中的更改。 这两个屏幕截图都来自同一个设备。 但是看起来不一样

我的代码为webView加载在这里这里链接。

我希望可能有办法做到这一点。 需要一些帮助。 谢谢。

UPDATE

我也看到同样的问题在这里报道。 但不知道是否有解决scheme。

真诚的,Shreyash

  • Android Youtube Player Api活动完成并创建
  • 获取YouTubevideo的下载url(Android / Java)
  • Youtube API“初始化YouTube播放器时发生错误”。
  • 如何在Android上的WebView中嵌入YouTube剪辑
  • 触摸设备上的嵌入式YouTubevideo会自动显示右键单击上下文菜单
  • 如何在Android的ExoPlayer中播放YouTubevideo?
  • 在Android应用内embeddedYoutubevideo
  • 使用WebView和浏览器进行YouTubevideoapi有何不同?
  • iFrame是一个选项,但你可以试试这个

    Android的WebView和WebChromeClient类扩展,支持完整的HTML5video支持

    VideoEnabledWebView

    我还没有尝试过,但希望对你有帮助。

    在你的java文件中做下列修改:

     view.setWebViewClient(new Browser()); view.setWebChromeClient(new MyWebClient()); 

    并添加这个2类是Browser类和MyWebClient类的Java文件

     class Browser extends WebViewClient { Browser() {} public boolean shouldOverrideUrlLoading(WebView paramWebView, String paramString) { paramWebView.loadUrl(paramString); return true; } } public class MyWebClient extends WebChromeClient { private View mCustomView; private WebChromeClient.CustomViewCallback mCustomViewCallback; protected FrameLayout mFullscreenContainer; private int mOriginalOrientation; private int mOriginalSystemUiVisibility; public MyWebClient() {} public Bitmap getDefaultVideoPoster() { if (MainActivity.this == null) { return null; } return BitmapFactory.decodeResource(MainActivity.this.getApplicationContext().getResources(), 2130837573); } public void onHideCustomView() { ((FrameLayout)MainActivity.this.getWindow().getDecorView()).removeView(this.mCustomView); this.mCustomView = null; MainActivity.this.getWindow().getDecorView().setSystemUiVisibility(this.mOriginalSystemUiVisibility); MainActivity.this.setRequestedOrientation(this.mOriginalOrientation); this.mCustomViewCallback.onCustomViewHidden(); this.mCustomViewCallback = null; } public void onShowCustomView(View paramView, WebChromeClient.CustomViewCallback paramCustomViewCallback) { if (this.mCustomView != null) { onHideCustomView(); return; } this.mCustomView = paramView; this.mOriginalSystemUiVisibility = MainActivity.this.getWindow().getDecorView().getSystemUiVisibility(); this.mOriginalOrientation = MainActivity.this.getRequestedOrientation(); this.mCustomViewCallback = paramCustomViewCallback; ((FrameLayout)MainActivity.this.getWindow().getDecorView()).addView(this.mCustomView, new FrameLayout.LayoutParams(-1, -1)); MainActivity.this.getWindow().getDecorView().setSystemUiVisibility(3846); } } 

    如果我理解正确,你有一个iframe包含第二个iframe(youtube之一)。 尝试将allowfullscreen属性添加到“父”iframe。

    对于完整的浏览器支持,应该看起来像这样:

     <iframe src="your_page_url" allowfullscreen="allowfullscreen" mozallowfullscreen="mozallowfullscreen" msallowfullscreen="msallowfullscreen" oallowfullscreen="oallowfullscreen" webkitallowfullscreen="webkitallowfullscreen"> </iframe>