Как определить, когда страница WebView пытается закрыть? - PullRequest
4 голосов
/ 23 августа 2011

У меня есть WebView, в который я загружаю страницу php Facebook sharer. Эта страница не имеет какой-либо формы подтверждения, она просто закрывает окно после того, как пользователь поделился или отменил.

Поскольку он загружен в веб-представление, «закрывать» его нечего, поэтому мне нужно обнаружить окно, пытающееся закрыть его, и выполнить этот обратный вызов.

Из моих различных поисков выясняется, что способ справиться с этим - через WebChromeClient. Итак, я пытаюсь сделать следующее, но обратный вызов никогда не вызывается. Я явно что-то упускаю, но не знаю что. Такое ощущение, что событие onCloseWindow должно быть переопределено, но это заставляет затмение жаловаться (разумно) на то, что мне нужен супер экземпляр, что, как представляется, документация не предполагает.

Вся помощь приветствуется.

[РЕДАКТИРОВАТЬ] о, и я только что попытался поменять порядок действий, установить WebChromeClient перед вызовом URL, и (как я ожидал) это никак не изменило поведение.

webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 
    webview.setWebViewClient(new WebViewClient()); 
    webview.loadUrl("http://www.facebook.com/sharer/sharer.php?u=http://EXTRACTED.com?img_id=abc");// + getIntent().getStringExtra("userId"));
    WebChromeClient wbc = new WebChromeClient(){

        public void onCloseWindow(Window w){
            Log.d(TAG, "Window trying to close");
        }
    };

    webview.setWebChromeClient(wbc);

1 Ответ

6 голосов
/ 23 августа 2011

Что не так с:

   public void onCloseWindow(WebView w){
        super.onCloseWindow(w);
        Log.d(TAG, "Window trying to close");
    }
...