Search code examples
androidcordovaandroid-webview

Set loadURLTImeOutValue on WebView


I'm working with PhoneGap and Android and have my .html and js files on an external server. When I use the following code, the app loads my external .html files and everything works fine:

this.setIntegerProperty("loadUrlTimeoutValue", 60000);
this.loadUrl("http://www.myserver.com");

However, when work via a WebView I can't seem to set the loadURLTimeoutValue for a WebView:

private WebView webView;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);  

try {
     webView = (WebView) findViewById(R.id.webview);    
     webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
     webView.loadUrl("http://www.myserver.com");     
}

This doesn't work. How can I set the timeout value on the WebView?


Solution

  • This is a workaround to simulate the described behavior. You can use a WebViewClient, and override the onPageStarted method:

    public class MyWebViewClient extends WebViewClient {
        boolean timeout;
    
        public MyWebViewClient() {
            timeout = true;
        }
    
        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            new Thread(new Runnable() {
                @Override
                public void run() {
                    timeout = true;
    
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    if(timeout) {
                        // do what you want
                    }
                }
            }).start();
        }
    
        @Override
        public void onPageFinished(WebView view, String url) {
            timeout = false;
        }
    }
    

    If timeout, you can load, for example, an error page...

    To add the WebViewClient to you WebView, just do this:

    webView.setWebViewClient(new MyWebViewClient());