嵌入 iframe 的 Youtube 视频无法在 Android 4.0.3 上播放
Posted
技术标签:
【中文标题】嵌入 iframe 的 Youtube 视频无法在 Android 4.0.3 上播放【英文标题】:Youtube video embedded with iframe not playing on Android 4.0.3 【发布时间】:2018-05-26 09:25:25 【问题描述】:我有在 android 上的 WebView 中播放 YouTube 的代码。 它在新手机(Android 4.4、5.1、6、7 OS)上运行良好,但是当我在 Android 4.0.3 上尝试它时,它会打开带有控件的 YouTube 框架,单击中间的按钮播放后,灰色背景会显示所有时间。
代码:
private void initializeWebView()
WebView webView = (WebView) findViewById(R.id.webView);
//webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
webView.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
webView.setBackgroundColor(getResources().getColor(R.color.semi_transparent_black_20percentage));
webView.getSettings().setBuiltInZoomControls(true);
//webView.getSettings().setDisplayZoomControls(false);
webView.setWebViewClient(new WebViewClient()
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
return false;
);
WebSettings webSetting = webView.getSettings();
webSetting.setjavascriptEnabled(true);
webSetting.setDisplayZoomControls(false);
//webSetting.setLoadWithOverviewMode(true);
//webSetting.setUseWideViewPort(true);
int screenWidth = getWindowManager().getDefaultDisplay().getWidth();
webView.setLayoutParams(new RelativeLayout.LayoutParams( screenWidth / 2, LayoutParams.MATCH_PARENT));
getWindow().setFlags(
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webSetting.setJavaScriptEnabled(true);
webSetting.setBuiltInZoomControls(true);
webSetting.setAllowContentAccess(true);
webSetting.setEnableSmoothTransition(true);
webSetting.setLoadsImagesAutomatically(true);
webSetting.setLoadWithOverviewMode(true);
webSetting.setSupportZoom(false);
webSetting.setUseWideViewPort(true);
webSetting.setAppCacheEnabled(true);
webSetting.setSupportMultipleWindows(true);
webView.setVisibility(View.VISIBLE);
public void loadPageIntoWebView(String htmlFilename)
AssetManager mgr = getBaseContext().getAssets();
try
String htmlContentInStringFormat = "";
WebView webView = (WebView) findViewById(R.id.webView);
String frameVideo = "<body>Video From YouTube<br><iframe width=\"420\" height=\"315\" src=\"https://www.youtube.com/embed/2a7f29Jvihc?wmode=transparent\" frameborder=\"0\" allowtransparency></iframe></body>";
htmlContentInStringFormat = frameVideo;
webView.loadDataWithBaseURL(null, htmlContentInStringFormat, "text/html", "utf-8", null);
catch (Exception e)
e.printStackTrace();
此代码运行良好,可在较新的手机(Android OS4.4-7)上播放 YouTube 视频。
我应该改变什么让它在 Android 4.0.3 上也能工作?
this is the photo showing the gray background without playing youtubevideo after clicking on the button play inthe middle of the screen:
【问题讨论】:
【参考方案1】:解决了!
在我添加以下行后,它也适用于 Android 4.0.3:
webView.setWebChromeClient(new WebChromeClient() );
这不是强制性的,但我在此行之前添加了一行: webView.setWebViewClient(new WebViewClient()
希望这个解决方案能够帮助其他使用Epson Moverio BT-200智能眼镜等的同事。
;-)
【讨论】:
以上是关于嵌入 iframe 的 Youtube 视频无法在 Android 4.0.3 上播放的主要内容,如果未能解决你的问题,请参考以下文章
使用 admob 展示广告后,无法在 iOS 设备上的 ionic 应用程序的 iframe 内播放嵌入的 youtube 视频
无法通过 api 调用 pauseVideo 访问 youtube 嵌入式 iframe
jQuery 在页面加载时播放 iframe 嵌入的 YouTube 视频