androidurlandroid-webviewandroid-websettings

Clicking URLs opens default browser


I have loaded an external URL in my WebView. Now what I need is that when the user clicks on the links on the page loaded, it has to work like a normal browser and open the link in the same WebView. But it's opening the default browser and loading the page there?

I have enabled JavaScript. But still it's not working. Have I forgotten something?


Solution

  • If you're using a WebView you'll have to intercept the clicks yourself if you don't want the default Android behaviour.

    You can monitor events in a WebView using a WebViewClient. The method you want is shouldOverrideUrlLoading(). This allows you to perform your own action when a particular URL is selected.

    You set the WebViewClient of your WebView using the setWebViewClient() method.

    If you look at the WebView sample in the SDK there's an example which does just what you want. It's as simple as:

    private class HelloWebViewClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }