Abhinav Abhinav - 1 month ago 115
Javascript Question

window.close() not working in android webview?

Android 4.1
Eclipse
Testing on device

I am trying to open a html/javascript webpage, hosted on my localhost for now, in my android application through a webview.
The page is suppose to just close after 2 sec through the below code

<script type="text/javascript">
alert('hello');
setInterval(function(){window.close();},2000);
</script>


I am able to get the hello alert by using WebChromeClient. But the window.close is still not working. Any help would be appreciated.

PS: Here is how i am loading the URL:

WebSettings ws = webView.getSettings();
ws.setJavaScriptEnabled(true);
ws.setJavaScriptCanOpenWindowsAutomatically(true);
webView.loadUrl("http://192.168.1.137/abc.html");
webView.setWebChromeClient(new WebChromeClient());

Answer

Try this :

WebChromeClient webClient = new WebChromeClient(){

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

Description :

public void onCloseWindow (WebView window)

Notify the host application to close the given WebView and remove it from the view system if necessary. At this point, WebCore has stopped any loading in this window and has removed any cross-scripting ability in javascript.