WebView 中的 Youtube 视频无法加载 [英] Youtube Video in WebView doesn't load

查看:15
本文介绍了WebView 中的 Youtube 视频无法加载的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我已经在我的 Activity 中实现了一个 WebView,为此我已经授予了权限

使用此代码:

 WebView mWebView;mWebView = (WebView) findViewById(R.id.ueber_webview);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setPluginsEnabled(true);mWebView.loadUrl("file:///android_asset/MyTestPage.htm");

html 页面正在加载 *好吧*,同时显示视频 带有边框,典型的 Youtube-Play-Button 位于视频的中心.但是当我按下它时,视频不会 *加载*.

这是htm内容:

 

<iframe src="http://www.youtube.com/embed/MyURL"//必须隐藏网址,以...j4Fs?rel=0"结尾frameborder="0" allowfullscreen id="playerPlaceHolder"></iframe>

css 内容必须正确,因为它可以正确显示,这应该不是问题.

有什么帮助吗?

解决方案

现在它可以工作了,结合了一些东西:

公共类视频扩展活动{私有 WebView mWebView;私人字符串额外;@覆盖public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.videos_layout);extra = getIntent().getStringExtra("VideosId");mWebView = (WebView) findViewById(R.id.videos_webview);mWebView.getSettings().setJavaScriptEnabled(true);mWebView.getSettings().setPluginsEnabled(true);最终活动活动 = this;mWebView.setWebChromeClient(new WebChromeClient() {public void onProgressChanged(WebView view, int progress) {//活动和 Web 视图以不同的尺度衡量进度.//当我们达到 100% 时,进度条会自动消失活动.setProgress(进度* 1000);}});mWebView.setWebViewClient(new MyOwnWebViewClient());mWebView.loadUrl("file:///android_asset/Videos/"+extra+".htm");mWebView.setWebViewClient(new MyOwnWebViewClient());}//Ermöglicht das Zurücknavigieren im Browser mittels Back-Button@覆盖公共布尔 onKeyDown(int keyCode, KeyEvent 事件) {if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {mWebView.goBack();返回真;}return super.onKeyDown(keyCode, event);}

清单中的这些条目:

 <uses-permission android:name="android.permission.INTERNET"></uses-permission><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission><uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission><application android:icon="@drawable/icon" android:label="@string/app_name" android:hardwareAccelerated = "true">

但我不知道,至少需要哪一个.此外,无法跳过视频的某些部分,我必须一口气看完.有人知道解决办法吗?

MyOwnWebViewClient:

import android.webkit.WebView;导入 android.webkit.WebViewClient;//启用用户在 WebView 中导航的可能性并阻止,//调用标准浏览器公共类 MyOwnWebViewClient 扩展了 WebViewClient {@覆盖public boolean shouldOverrideUrlLoading(WebView view, String url) {view.loadUrl(url);返回真;}}

I've implemented a WebView in my Activity, for that I've given the permission

<uses-permission android:name="android.permission.INTERNET"/>

with this code:

    WebView mWebView;
    mWebView = (WebView) findViewById(R.id.ueber_webview);
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginsEnabled(true);
    mWebView.loadUrl("file:///android_asset/MyTestPage.htm");

The html page is loading *well*, also the are displayed the video with its border and the typical Youtube-Play-Button in the center of the video. But when I press it, the video doesn't *load*.

This is the htm content:

    <div id="playerFrame">
<iframe src="http://www.youtube.com/embed/MyURL" //have to hide the url, ends with something like "...j4Fs?rel=0"
frameborder="0" allowfullscreen id="playerPlaceHolder"></iframe>
</div>

The css content must be correct cause it's displayed correctly, that shouldn't be the problem.

Any help?

解决方案

Now it works, with a combination of some things:

public class Videos extends Activity {

private WebView mWebView;
private String extra;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.videos_layout);       

    extra = getIntent().getStringExtra("VideosId");        
    mWebView = (WebView) findViewById(R.id.videos_webview); 
    mWebView.getSettings().setJavaScriptEnabled(true);
    mWebView.getSettings().setPluginsEnabled(true);

    final Activity activity = this;
    mWebView.setWebChromeClient(new WebChromeClient() {
      public void onProgressChanged(WebView view, int progress) {
        // Activities and WebViews measure progress with different scales.
        // The progress meter will automatically disappear when we reach 100%
        activity.setProgress(progress * 1000);
      }
    });

    mWebView.setWebViewClient(new MyOwnWebViewClient());   


    mWebView.loadUrl("file:///android_asset/Videos/"+extra+".htm");     
    mWebView.setWebViewClient(new MyOwnWebViewClient());      
}

//Ermöglicht das Zurücknavigieren im Browser mittels Back-Button
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
        mWebView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

And these entries in the manifest:

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>

<application android:icon="@drawable/icon" android:label="@string/app_name" android:hardwareAccelerated = "true">

But I don't know, which one are at least necessary. Further, it's not possible to skip parts of the video, I have to watch it in one turn. Anyone knows a solution?

And MyOwnWebViewClient:

import android.webkit.WebView;
import android.webkit.WebViewClient;
//Enables the possibility for the User to navigate in the WebView and prevents,
//that the Standard-Browser is invoked

public class MyOwnWebViewClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }

}

这篇关于WebView 中的 Youtube 视频无法加载的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆