【问题标题】:Android WebView - code that can display and play a podcast can't play a YouTube videoAndroid WebView - 可以显示和播放播客的代码无法播放 YouTube 视频
【发布时间】:2013-07-26 22:53:02
【问题描述】:

我有这段代码可以用来显示一个 WebView 并使用它:

WebView webview = null;

@Override
public void onCreate(Bundle savedInstanceState) 
 {
  //setTheme(R.style.Theme_Sherlock_Light);
  super.onCreate(savedInstanceState);
  //setContentView(R.layout.podcasts);


  webview = new WebView(this);
  webview.getSettings().setAppCacheEnabled(false);
  webview.getSettings().setJavaScriptEnabled(true);
  webview.setInitialScale(1);
  webview.getSettings().setPluginState(PluginState.ON);

  webview.setWebViewClient(new WebViewClient() {
     @Override
     public boolean shouldOverrideUrlLoading(WebView view, String url) {
         view.loadUrl(url);
         return true;
     }
});




  //webSettings.setBuiltInZoomControls(true);


  WebSettings webSettings = webview.getSettings();
  webSettings.setJavaScriptEnabled(true);
  webSettings.setBuiltInZoomControls(true);
  //webSettings.getMediaPlaybackRequiresUserGesture();
  webSettings.setAllowContentAccess(true);
  webSettings.setEnableSmoothTransition(true);
  webSettings.setLoadsImagesAutomatically(true);
  webSettings.setLoadWithOverviewMode(true);
  webSettings.setSupportZoom(true);
  webSettings.setUseWideViewPort(true);

  setContentView(webview);
  webview.loadUrl("url_to_go_to");         

但当我尝试使用此代码指向 YouTube 频道时,它只会显示一个空白屏幕。 知道为什么会这样吗?

谢谢!

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    为了显示 HTML5 视频,您需要在 WebView 中启用以下内容:

    WebView view;
    ... //initialize WebView
    WebSettings webViewSettings = view.getSettings();
    view.setWebChromeClient(new WebChromeClient(){}); //just added this
    webViewSettings.setDomStorageEnabled(true);
    webViewSettings.setAppCacheEnabled(true);
    webViewSettings.setAppCachePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/cache");
    webViewSettings.setDatabaseEnabled(true);
    webViewSettings.setDatabasePath(getApplicationContext().getFilesDir().getAbsolutePath() + "/databases");
    

    您还需要将android:hardwareAccelerated="true" 放入您的AndroidManifest。否则,YouTube 视频之类的 HTML5 内容将无法正常工作。

    【讨论】:

    • 我可以播放视频和音频,但是 youtube 的屏幕是黑色的。你有过这种情况吗?
    • 我没见过。您在什么设备和 Android 版本上进行测试?此外,还要在代码中修复一件事,将 return false;而不是 view.loadUrl(url);返回真;在 shouldOverrideUrlLoading 中。
    • 其实目前我最大的问题是发生了一些重定向,如果我不对此发表评论: webview.setWebViewClient(new WebViewClient() { Override public boolean shouldOverrideUrlLoading(WebView view, String url ) { view.loadUrl(url); return false; } });然后重定向会阻止加载 YouTube 频道页面。
    • 不要将 loadUrl() 放在 shouldOverrideUrlLoading 中,这可能是导致重定向的原因。只需返回 false。
    • 刚试过没有那条线,同样的事情。它只是显示一个灰色屏幕,而不是进入 youtube 频道页面:(
    猜你喜欢
    • 2012-12-14
    • 2013-07-13
    • 2014-02-10
    • 2012-08-05
    • 2017-12-23
    • 2012-06-07
    • 2011-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多