私のアプリケーションは、WebView を使用してフラッシュ ビデオ コンテンツを表示します。
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