WebView没有在Android 2.3.7上显示视频

时间:2012-10-07 17:41:23

标签: android android-webview android-video-player android-websettings

我尝试在Android WebView中播放dailymotion.com视频。

在Android 4.0.1上,当我在清单文件中设置android:hardwareAccelerated =“true”时,它运行得很好。

当我在Android 2.3.7上使用它时,视频在第一帧冻结,我可以在logcat上看到以下错误:

E/Web Console(14426): Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1 at http://static1.dmcdn.net/js/gen/widget/pack/player.js.v43e491a06c202f1e6:1

当我在Android 4.0.1内置浏览器上播放视频时,视频会在浏览器中播放。当我在Android 2.3.7内置浏览器中播放时,视频似乎正在打开一个外部媒体播放器。

这是我正在使用的代码:

mVideoWebView.setWebChromeClient(new WebChromeClient());
setWebViewSettings(mVideoWebView);
String data_html = "<!DOCTYPE HTML> <html xmlns=\"http://www.w3.org/1999/xhtml\" 
                    xmlns:og=\"http://opengraphprotocol.org/schema/\" 
                    xmlns:fb=\"http://www.facebook.com/2008/fbml\">
                    <head></head>
                    <body style=\"margin:0 0 0 0; padding:0 0 0 0;\">
                    <iframe src=\"http://www.dailymotion.com/embed/video/xu4vre\" 
                            width=\"300\" height=\"162\" frameborder=\"0\">
                    </iframe> </body> </html> ";
mVideoWebView.loadData(data_html, "text/html", null);
public static void setWebViewSettings(WebView webview) {
    WebSettings webSettings = webview.getSettings();
    webSettings.setPluginState(PluginState.ON);
    webSettings.setJavaScriptEnabled(true);
    webSettings.setAllowFileAccess(true);
    webSettings.setLoadWithOverviewMode(false); // zoom y/n
    webSettings.setUseWideViewPort(true); // true = like desktop
    webSettings.setPluginsEnabled(true);

    //webSettings.setAllowContentAccess(true);
    webSettings.setAllowFileAccess(true);
    //webSettings.setAllowFileAccessFromFileURLs(true);
    //webSettings.setAllowUniversalAccessFromFileURLs(true);
    webSettings.setDatabaseEnabled(true);
    webSettings.setGeolocationEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setDomStorageEnabled(true);
}

我认为解决方案的关键在于WebChromeClient。如果我删除行mVideoWebView.setWebChromeClient(new WebChromeClient());,即使在Android 4上也无法播放视频,我也看不到错误。

0 个答案:

没有答案