Это происходит в ICS, потому что метод show()
в android.webkit.PluginFullScreenHolder
вызывается при попытке перейти в полноэкранный режим. Этот метод делает следующее:
WebChromeClient client = mWebView.getWebChromeClient();
client.onShowCustomView(mLayout, mOrientation, mCallback);
Если вы не установите WebChromeClient
на WebView
, вы получите NPE.
Это исправило наш сбой, однако WebView исчезает и полноэкранное видео не отображается.
См .: Android ICS 4.0 Размещение Flash WebView в полноэкранных вызовах hideAll Method?
*** Обновление:
В конечном счете, чтобы заставить WebView
воспроизводить флэш-видео в полноэкранном режиме, мне пришлось реализовать метод onShowCustomView()
в моем WebChromeClient
способом, аналогичным тому, что было сделано в исходном коде для Android браузер. Реализация этого метода, который я использовал для вдохновения, была в классе BaseUI:
https://github.com/android/platform_packages_apps_browser/blob/master/src/com/android/browser/BaseUi.java
Я не до конца понимаю, что здесь происходит. Мне также хотелось бы, чтобы я понял, почему разработчики на ICS решили требовать реализации этого метода. Хотелось бы знать ценность или какую проблему это решило. В прошлых версиях этот полноэкранный режим «просто работал», теперь он требует много копаний.