2013-07-25 96 views
0

我有这样的代码,其工作原理显示的WebView,并使用它:的Android的WebView - 代码,可以显示和播放播客无法播放YouTube视频

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频道,它只是显示一个空白屏幕。 任何想法为什么会发生?

谢谢!

回答

4

为了让HTML5视频,显示你需要启用下面的东西在网页视图:

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内容无法使用。

+0

我能够播放视频和音频播放,但在YouTube的屏幕是黑的。你有过这种事吗? – Genadinik

+0

我还没有看到。你正在测试什么设备和Android版本?此外,还有一件事要在你的代码中修复,将返回false;而不是view.loadUrl(url); 返回true;在shouldOverrideUrlLoading中。 – anthonycr

+0

其实此刻我最大的问题是,有一些重定向发生,如果我不发表意见如下:\t webview.setWebViewClient(新WebViewClient(){ \t覆盖 \t公共布尔shouldOverrideUrlLoading(的WebView视图,字符串URL){ \t view.loadUrl(url); \t return false; \t} \t});那么重定向会阻止加载YouTube频道页面。 – Genadinik