在我的Android应用程序中,我有一个WebView来显示来自我们网站的HTML数据。有时页面会有youtube嵌入对象。这在应用程序中没有正确显示。有没有办法在WebView中显示/播放YouTube视频?感谢。
答案 0 :(得分:8)
除了可能在具有Flash的设备上之外,您无法显示它们。
但是,如果您可以解析YouTube视频详细信息,则可以构建ACTION_VIEW
Intent
,以便在YouTube应用中显示这些内容...对于那些拥有该视频的Android设备YouTube申请。
您也可以尝试HTML5的<video>
标记,浏览器应用中支持AFAIK,因此可以在WebView
中使用。
答案 1 :(得分:7)
答案 2 :(得分:6)
webView.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
// YouTube video link
if (url.startsWith("vnd.youtube:"))
{
int n = url.indexOf("?");
if (n > 0)
{
startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(String.format("http://www.youtube.com/v/%s", url.substring("vnd.youtube:".length(),n)));
}
return (true);
}
return (false);
}
});
您的WebView(webView)会向您发送带有以下URL的shouldOverrideUrlLoading消息:
vnd.youtube:{VIDEO_ID} {PARMS}
将其解析为将其转换为http://www.youtube.com/v/ {VIDEO_ID},然后将此修订后的网址作为意图移交。
适合我...
答案 3 :(得分:4)
在这里阅读关于android-developers群组的帖子:YouTube in the emulator?
基本上,播放YouTube剪辑的最佳方式是为其创建自己的活动,这是一个很好的例子:Polish Your App: Free Embeddable Android YouTube Activity!
更新:YouTube令牌更改导致的不兼容问题已修复。该组件的最新版本应该适用于公开的YouTube视频。
答案 4 :(得分:2)
您可以尝试切换网站以嵌入HTML5 version of the YouTube player而不是Flash版本。仍然不确定这将100%工作,但它显然比目前不支持闪存的设备上的闪存版本更好。
编辑:没关系,看起来HTML5版本也需要浏览器支持H.264编解码器,它看起来不像任何Android设备目前支持的那样。
答案 5 :(得分:0)
嵌入式YouTube视频在桌面浏览器和iPhone浏览器中运行良好(即使嵌入iPhone上的应用程序中),因此它似乎与Android而不是YouTube有关。
答案 6 :(得分:0)
我在android WebView中有一个用于html5视频标签的库,它适用于所有YouTube视频和大多数Flash视频,支持在其他功能中输入和退出全屏。