在Android WebView中播放嵌入HTML的youtube / vimeo视频
作者:互联网
嘿所以我正在尝试在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>我的WebView中的视频?
解决方法:
因此,经过几天的修补,我终于找到了解决问题的方法!
如果你想玩< iframe ../\u0026gt;您需要使用基本URL加载数据的WebView中的视频!此baseURL应该是嵌入视频的URL,或任何有助于指示视频可以找到的位置的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);
做这个安排:
/*
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>
标签:android,youtube,video,webview,vimeo 来源: https://codeday.me/bug/20190624/1278167.html