android - 在 Android 上的 WebView iFrame 中显示 Vimeo

标签 android iframe webview vimeo

我正在尝试创建一个应用程序来显示带有嵌入式 iframe 的 WebView,该 iframe 将显示 Vimeo 视频。当我加载 WebView 时,iframe 只是一个黑框,当我单击它时不会显示视频或执行任何操作。

mWebView = (WebView)v.findViewById(R.id.webView);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setSupportZoom(true); 
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

mWebView.getSettings().setSaveFormData(true);
mWebView.getSettings().setJavaScriptEnabled(true);

String data = new String("<html xmlns='http://www.w3.org/1999/xhtml' xmlns:fb='http://ogp.me/ns/fb#'><head>" +
"<meta http-equiv='Content-Type' content='text/html; charset=UTF-8' />" +
"<title>Northern African and Middle Eastern Peoples </title>" +
"<link rel='stylesheet' href='./style.css' type='text/css' media='screen' /></head><body>" +
"<div id='content'><div class='post'>" + 

"<iframe style='margin-top:10px; margin-bottom:10px;' src=http://player.vimeo.com/video/" + mRssVideoItem.getVimeoId() + "?title=0&byline=0&portrait=0' width='880' height='497' frameborder='0'>" +
"</iframe><h1>" + mRssVideoItem.getTitle() + "</h1><div class='timestamp'>" + formattedDate + "</div>" + mRssVideoItem.getDescription() + "</div></div></body></html>"); 

mWebView.setWebViewClient(new WebViewClient(){
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    return false;
}
});
mWebView.loadDataWithBaseURL("file:///android_asset/.", data, "text/html", "UTF-8", null);

我已经搜索了几天,找不到任何有用的东西。

更新:我仍在为此苦苦挣扎。我有几件不同的事情正在发生,我不太明白。首先,我认为我使用下面的建议让 Vimeo 视频正常工作。然而,我今天回到这个项目,只看到一个黑盒子。另一个问题是 View 的“缩放”。有时,当我加载视频时,整个 View 都会出现在屏幕上。其他时候,就像图像被放大了一样,文字比我想象的要大得多。当我改变设备的旋转时,它似乎也会改变。下面是我使用 loadDataWithBaseURL 的 HTML。

http://www.w3.org/1999/xhtml' xmlns:fb=' http://ogp.me/ns/fb# '>北非和中东人民

No One But God

2013 年 5 月 14 日一位年轻的叙利亚父亲分享了他的家人逃离叙利亚内战的故事,以及他们在叙利亚寻找新生活的斗争约旦。


只要我不将 WebSettings LayoutAlgorithm 更改为 NARROW_COLUMNS,上述建议似乎就有效。有谁知道为什么这不允许视频显示?第二个问题是有时当“页面”加载时一切看起来都很棒,而有时内容真的很大并且图像超出了屏幕的一侧。它似乎与旋转和缩放或初始化有关,因为如果我旋转到横向并返回纵向,图像似乎会自行纠正。见下图。

Good Image

Bad Image

最佳答案

我实际上在几天前环顾四周时找到了一种在 WebView 中播放 vimeo 视频的方法。您可以查看代码 here .它使用来自 this 的 HTML5WebView其他项目。

但是 HTML5WebView 只是一个普通的 WebView 的包装器,专门用于播放视频。具体来说,您需要:

1- 开启 Javascript 2- 实现一个扩展 WebChromeClient 的类并实现 onShowCustomView 和 onHideCustomView 方法。

我现在的问题是如何捕获视频全屏时看到的那些控件。如果您或其他人以某种方式设法做到这一点,我们将不胜感激。

尼尔森

关于android - 在 Android 上的 WebView iFrame 中显示 Vimeo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18541028/

相关文章:

android - 如何以完整 HTML 格式在 WebView 中显示来自 feedburner 的内容?

html - 沙盒、IFrame 和允许同源

html - 每个网页的最大 <iFrame> 标记数

Android:单击链接时如何禁用 Web View 中的默认橙色边框

android - 从接收者自己的 onReceive() 方法中注销 'dynamic' BroadcastReceiver 是否可以?

javascript - 在jquery中单击iframe文档时如何获取包含iframe id

ios - 接触 Swift 3 时在 Webview 中获取 pdf 的实际坐标

java - Udacity Sunshine 应用程序第 1 课

android - 在 Retrofit - Android 中使用 addConverterFactory 处理 Json 和 XML 响应

java - 如何在自定义适配器中使用数组?