嘿所以我正在尝试在webview
内播放嵌入HTML的youtube / vimeo视频。
典型的HTML将如下所示:
<p>Here's some text from a server</p>
<p>This text goes inside of a webview</p>
<p>Sometimes there are iframe's with vimeo videos embedded in the HTML text like this:</p>
<iframe src="//player.vimeo.com/video/12345?title=0&byline=0&portrait=0" width="500" height="281" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>
<p>Sometimes there are iframe's with youtube videos embedded in the HTML text like this:</p>
<p><iframe width="640" height="360" src="//www.youtube.com/embed/-NwibJy9-Cg?feature=player_detailpage" frameborder="0" allowfullscreen></iframe></p>
但没有视频播放,也没有显示视频缩略图。
我已经看过很多关于这个主题的不同StackOverflow帖子,但是没有找到任何运气。
这是我设置webview的代码:
public class ReaderFragment extends Fragment {
private TextView mTitleTextView, mDateTextView;
private WebView mContentWebView;
private StoryItem mStory;
@Override
public View onCreateView(LayoutInflater inflater,
final ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.fragment_reader, container, false);
mTitleTextView = (TextView) v
.findViewById(R.id.fragment_reader_story_title);
mTitleTextView.setText(mStory.getTitle());
mDateTextView = (TextView) v
.findViewById(R.id.fragment_reader_story_date);
mDateTextView.setText(mStory.getAuthor());
mContentWebView = (WebView) v
.findViewById(R.id.fragment_reader_story_content);
mContentWebView.setWebChromeClient(new WebChromeClient());
mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
mContentWebView.setWebViewClient(new WebViewClient());
mContentWebView.setBackgroundColor(0x00000000);
mContentWebView.getSettings().setBuiltInZoomControls(true);
mContentWebView.getSettings().setJavaScriptEnabled(true);
mContentWebView.getSettings().setLoadWithOverviewMode(true);
mContentWebView.getSettings().setUseWideViewPort(true);
//I load the webview with the entire HTML content from the server, including text, and
//sometime <iframe> videos, I'd like to successfully embed these videos!
mContentWebView.loadDataWithBaseURL(null, mStory.getUnparsedContent(),
"text/html; charset=utf-8", "UTF-8", null);
return v;
}
如何显示这些内联<iframe
&gt;我的WebView
内的视频?
答案 0 :(得分:4)
所以经过几天的修补,我最终找到了我的问题的解决方案!
如果您想在<iframe ../>
需要中播放WebView
个视频,请使用基本网址加载数据!此baseURL应该是嵌入视频的位置的URL,或任何可以帮助指示视频可以找到的位置。
不要这样做:
// You need to give a baseUrl (e.g. the corresponding url of the HTML String)
webview.loadDataWithBaseURL(null, htmlWithVideosString,
"text/html; charset=utf-8", "UTF-8", null);
DO THE INSTEAD :
/*
VERY important to supply a baseURL for playing the videos!
Without a baseUrl the WebView has no idea where to look for the video.
The baseUrl will typically just be the URL that corresponds to the
HTML String that you are using.
*/
mContentWebView.loadDataWithBaseURL(baseUrlOfHtmlContent, htmlWithVideosString,
"text/html; charset=utf-8", "UTF-8", null);
祝你好运!
还记得设置WebView
......就像这样......
mContentWebView.setWebChromeClient(new WebChromeClient());
mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON);
mContentWebView.getSettings().setPluginState(WebSettings.PluginState.ON_DEMAND);
mContentWebView.setWebViewClient(new WebViewClient());
mContentWebView.getSettings().setJavaScriptEnabled(true);
提示:可能需要在Manifest
中打开“硬件加速”才能生效。
示例硬件加速开启:
<application
android:name="com.example.app"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:hardwareAccelerated="true">
<!-- hardwareAccelerated requires SDK 14 -->
...
</application>