Как реагировать на полноэкранную кнопку на веб-сайтах с видео

Я использую веб-просмотр для воспроизведения видео с различных сайтов, на некоторых из них есть полноэкранная кнопка.

введите здесь описание изображения

Я хотел бы, чтобы веб-просмотр реагировал на полноэкранную кнопку.

Если я установил webSettings.setUseWideViewPort(false);, то видео зависает при нажатии кнопки полноэкранного режима, и я вижу следующую ошибку в логарифме:

10-09 08:32:27.970: D/gralloc(31814): unmmap  pid(1876), vaddr(0x589dc000)
10-09 08:32:27.970: E/gralloc(31814): [GR_MD] unmapping from 0x5786c000, size=33427456
10-09 08:32:27.970: D/gralloc(31814): unmmap  pid(1876), vaddr(0x5a9fb000)
10-09 08:32:27.970: E/gralloc(31814): [GR_MD] unmapping from 0x5984d000, size=33427456
10-09 08:32:27.975: D/gralloc(31814): unmmap  pid(1876), vaddr(0x5e616000)
10-09 08:32:27.975: E/gralloc(31814): [GR_MD] unmapping from 0x5d42a000, size=33427456

Я использую Android 4.0.1, вот мой код:

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);
}

person Asaf Pinhassi    schedule 09.10.2012    source источник
comment
какая версия устройства, на котором вы тестируете? Ваше приложение падает, когда вы тестируете его на устройствах выше, чем ICS?   -  person Lazy Ninja    schedule 09.10.2012
comment
Я использую Galaxy s2 под управлением Cyanogen Android 4.0.1. Приложение не вылетает, просто веб-просмотр перестает отвечать.   -  person Asaf Pinhassi    schedule 09.10.2012
comment
добавить webSettings.setWebChromeClient(new WebChromeClient()); и тест.   -  person Lazy Ninja    schedule 09.10.2012


Ответы (1)


Нашел мой ответ здесь: https://stackoverflow.com/a/12850816/475472

Мне пришлось создать новый WebChromeClient, переопределив onShowCustomView(View view, WebChromeClient.CustomViewCallback callback) и onHideCustomView()

person Asaf Pinhassi    schedule 22.10.2012