【问题标题】:Youtube Video in WebView doesn't loadWebView 中的 Youtube 视频无法加载
【发布时间】:2012-01-18 12:41:54
【问题描述】:

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

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

使用此代码:

    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内容:

    <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>

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

有什么帮助吗?

【问题讨论】:

    标签: android video webview youtube


    【解决方案1】:

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

    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);
    }
    

    清单中的这些条目:

        <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;
    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;
        }
    
    }
    

    【讨论】:

    • 什么是 MyOwnWebViewClient?我正在尝试以相同的方式但没有播放视频,只有黑屏。但我的 htm 文件在浏览器中运行良好。我正在使用模拟器 2.2 和 2.3。任何帮助将不胜感激。谢谢。
    • 我添加了 MyOwnWebViewClient 类。你可以复制它。但是看看整个代码,我编辑了它!现在它完美地工作了。
    • 感谢您的回复 我尝试与您提到的相同,但它不起作用,点击视频时只显示黑屏。
    • 所以黑屏显示没有做任何事情或点击后?在点击之前,有缩略图的 youtube 播放按钮?或者到底发生了什么?
    • 当我点击播放符号时出现黑屏,然后缓冲并出现黑屏。
    【解决方案2】:

    我遇到了同样的问题,我在github 上分享了我的代码。您需要做的就是调用这行代码:-

            getSupportFragmentManager()
                    .beginTransaction()
                    .add(R.id.frag_root,
                            UniversalWebViewFragment.newInstance(
                                    <place your you tube url>, false)).commit();
    

    它也支持纵向模式。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-12-30
      • 2012-10-06
      • 2017-06-18
      • 2012-08-05
      • 2014-01-16
      • 2012-12-18
      • 2019-06-24
      • 1970-01-01
      相关资源
      最近更新 更多