不知何故Youtube HTML5视频大约一周前停止了我的工作。我不知道为什么。这是上周工作的代码(好吧,不是真正的代码,而是我能做的最小的例子):
public class VideoTestActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
WebView webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(PluginState.OFF);
webView.setWebChromeClient(new TestWebChromeClient());
setContentView(webView);
// Try with http://player.vimeo.com/video/24158845 and it works.
webView.loadUrl("http://www.youtube.com/embed/e2UIg3Ddfp0");
}
private class TestWebChromeClient extends WebChromeClient {
@Override
public void onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) {
super.onShowCustomView(view, callback);
VideoTestActivity.this.setContentView(view);
}
}
}
这不适用于我的手机或模拟器。疯狂的部分是Vimeo仍然很棒。我尝试设置一个iPhone用户代理,但这不起作用,我没有想法。它真的看起来Youtube已经改变了一些东西......
答案 0 :(得分:2)
Youtube
可能在其嵌入页面中发生了某些变化,很可能这会导致WebView
内部出现问题,这就是为什么它不再起作用了。
您是否也在同一台设备上测试应用程序?
我认为使用此解决方案不是一个好习惯,因为您不能依赖于Youtube
今天显示的内容并且它可以正常工作,并且在几天之内也会相同你现在刚刚遇到它,它仍然会起作用。我在videos
和Youtube
内容方面也存在类似问题,它可以在一台设备上运行,而在某些其他设备上则无法运行。它也是Flash
内容,许多Android设备没有Flash
,也无法播放内容。
解决方案是创建一个Intent
来播放视频:
Intent videoIntent=new Intent(Intent.ACTION_VIEW,
Uri.parse("http://www.youtube.com/my_url"));
startActivity(videoIntent);
但我建议按照Supported Media Formats中的建议对Android
的视频进行编码,如果有可能,请将它们存储在您自己的服务器上。
编辑:他们确实改变了一些东西,因为那里有一个js错误。您可以使用WebChromeClient
:
mWebView.setWebChromeClient(new WebChromeClient(){
@Override
public void onConsoleMessage(String message, int lineNumber,
String sourceID) {
super.onConsoleMessage(message, lineNumber, sourceID);
Log.i("VIDEO VIEW",message);
}
}
这是我收到的消息错误:
TypeError: Result of expression 'a' [undefined] is not an object.line 78sourcehttp://www.youtube.com/embed/e2UIg3Ddfp0
我不知道它是否对你有所帮助,我稍后再看看,看看能找到什么。