我的应用程序使用 WebView 来显示 Flash 视频内容。
在您尝试在 Android ICS 设备上全屏播放之前,一切似乎都很顺利。
它在较低版本的设备上运行良好。
在 ICS 设备上,它会引发 NullPointerException。这是我的代码:
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginsEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.setVerticalScrollbarOverlay(true);
webView.setWebViewClient(new WebViewClient() {
private ProgressDialog pd;
@Override
public void onPageStarted(WebView view, String url,
Bitmap favicon) {
pd = new ProgressDialog(TrainingDetailActivity.this);
pd.setProgressStyle(ProgressDialog.STYLE_SPINNER);
pd.setMessage("Loading");
pd.show();
super.onPageStarted(view, url, favicon);
}
@Override
public void onPageFinished(WebView view, String url) {
this.dismissDialog();
super.onPageFinished(view, url);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view,
String url) {
return false;
}
private void dismissDialog() {
if (pd != null) {
pd.dismiss();
pd = null;
}
}
});
webView.loadDataWithBaseURL(baseUrl, htmlstr, "text/html", "utf-8", null);
经过一番挖掘,我发现在 ICS 中调用了 android.webkit.PluginFullScreenHolder show() 方法并抛出了 NullExceptionPointer。问题出在那儿,而不是在我的代码上。我尝试了一些解决方法,但它们都不起作用。
- 解决方法:我添加了这一行:
webView.setWebChromeClient(new WebChromeClient() );
通过这项工作,不会发生 NullPointerException,但视频播放时没有声音,并且不会切换到全屏模式。
我环顾stackoverflow寻找解决方案,似乎最能解决我的问题的是这个答案:
https
:
//stackoverflow.com/a/9921073/1503155 但不幸的是,回答者没有解释base
他的代码片段中的变量是什么,我我仍然卡住了。
我的问题是,有没有办法解决这个错误。是,如何?
提前致谢。