WebView 中的 Youtube 视频无法加载
Posted
技术标签:
【中文标题】WebView 中的 Youtube 视频无法加载【英文标题】:Youtube Video in WebView doesn't load 【发布时间】:2012-01-18 12:41:54 【问题描述】:我已经在我的 Activity 中实现了一个 WebView,为此我已授予权限
<uses-permission android:name="android.permission.INTERNET"/>
使用此代码:
WebView mWebView;
mWebView = (WebView) findViewById(R.id.ueber_webview);
mWebView.getSettings().setjavascriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
mWebView.loadUrl("file:///android_asset/MyTestPage.htm");
html 页面正在加载 *很好*,同时显示 视频 带有边框和视频中心的典型 Youtube-Play-Button。但是当我按下它时,视频不 *加载*。
这是htm内容:
<div id="playerFrame">
<iframe src="http://www.youtube.com/embed/MyURL" //have to hide the url, ends with something like "...j4Fs?rel=0"
frameborder="0" allowfullscreen id="playerPlaceHolder"></iframe>
</div>
css 内容必须正确,因为它显示正确,这应该不是问题。
有什么帮助吗?
【问题讨论】:
【参考方案1】:现在它可以工作了,结合了一些东西:
public class Videos extends Activity
private WebView mWebView;
private String extra;
@Override
public void onCreate(Bundle savedInstanceState)
super.onCreate(savedInstanceState);
setContentView(R.layout.videos_layout);
extra = getIntent().getStringExtra("VideosId");
mWebView = (WebView) findViewById(R.id.videos_webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setPluginsEnabled(true);
final Activity activity = this;
mWebView.setWebChromeClient(new WebChromeClient()
public void onProgressChanged(WebView view, int progress)
// Activities and WebViews measure progress with different scales.
// The progress meter will automatically disappear when we reach 100%
activity.setProgress(progress * 1000);
);
mWebView.setWebViewClient(new MyOwnWebViewClient());
mWebView.loadUrl("file:///android_asset/Videos/"+extra+".htm");
mWebView.setWebViewClient(new MyOwnWebViewClient());
//Ermöglicht das Zurücknavigieren im Browser mittels Back-Button
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack())
mWebView.goBack();
return true;
return super.onKeyDown(keyCode, event);
清单中的这些条目:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<application android:icon="@drawable/icon" android:label="@string/app_name" android:hardwareAccelerated = "true">
但我不知道,至少哪一个是必要的。此外,无法跳过部分视频,我必须一口气看完。有谁知道解决办法吗?
还有MyOwnWebViewClient:
import android.webkit.WebView;
import android.webkit.WebViewClient;
//Enables the possibility for the User to navigate in the WebView and prevents,
//that the Standard-Browser is invoked
public class MyOwnWebViewClient extends WebViewClient
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url)
view.loadUrl(url);
return true;
【讨论】:
什么是 MyOwnWebViewClient?我正在尝试以相同的方式但没有播放视频,只有黑屏。但我的 htm 文件在浏览器中运行良好。我正在使用模拟器 2.2 和 2.3。任何帮助将不胜感激。谢谢。 我添加了 MyOwnWebViewClient 类。你可以复制它。但是看看整个代码,我编辑了它!现在它完美地工作了。 感谢您的回复 我尝试与您提到的相同,但它不起作用,点击视频时只显示黑屏。 所以黑屏显示没有做任何事情或点击后?在点击之前,有缩略图的 youtube 播放按钮?或者到底发生了什么? 当我点击播放符号时出现黑屏,然后缓冲并出现黑屏。【参考方案2】:我遇到了同样的问题,我在github 上分享了我的代码。您需要做的就是调用这行代码:-
getSupportFragmentManager()
.beginTransaction()
.add(R.id.frag_root,
UniversalWebViewFragment.newInstance(
<place your you tube url>, false)).commit();
它也支持纵向模式。
【讨论】:
以上是关于WebView 中的 Youtube 视频无法加载的主要内容,如果未能解决你的问题,请参考以下文章
Webview中的Android youtube网站正在干扰
嵌入在 Android Webview 中的 Youtube 视频不能以 SINGLE_COLUMN 布局播放
Youtube 视频未加载到 android 的 webview 中
为啥 Android WebView 不加载 youtube HTML5 iframe 视频?