我的应用程序使用WebView来显示Flash视频内容。
一切似乎顺利 ,直到您尝试播放Android ICS设备上的全屏。
它可以在较低版本的设备上正常工作。
在ICS设备上,它抛出一个NullPointerException。 这里是我的代码:Android ICS Flash WebView全屏投掷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
我仍然坚持。
我的问题是,有没有办法解决这个错误。是的,怎么样?
在此先感谢。
+1问你的老板许可和试图帮助。不幸的是,我仍然得到相同的空例外。也许我做错了什么。我设置我的webview是这样的:WebView.setWebChromeClient(new FullscreenableChromeClient(this));这是使用该课程的正确方法吗?无论如何,我会尝试在我身边看看我做错了什么。真的很感谢你的帮助,因为我可以看到我仍然无法修复它。 –
是的,那就是你如何使用这个类。什么是您收到错误的堆栈跟踪? – Knossos
我在原帖中添加了stacktrace图片。 –