Search code examples
androidwebviewandroid-webviewgoogle-maps-api-2

WebView Links not opening


I am trying to open a link using Webview in Android. There are some links embedded into WebView. My problem is webview is not opening any link that does not starts with www. For ex, www.google.com is working but maps.google.com is not.I have also tried to override WebViewClient but it didn't work. One thing I noticed is by putting Toast to see what url is being called in WebViewClient. It showed perfect for www.google.com but returned nothing for other links. I thing WebViewClient is not getting overriden in that case. What could be the reason. Do I have to call any ethod or some property of webview. Any help will be appreciated.

menuView.setWebViewClient(new WebViewClient() {
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            super.shouldOverrideUrlLoading(view, url);
            Toast.makeText(getApplicationContext(), "url:--" + url, Toast.LENGTH_LONG).show();          
            view.loadUrl(url);
            return false;
    }

    });

Properties that I have already set are :

menuView.setVerticalScrollBarEnabled(false);

    menuView.setHorizontalScrollBarEnabled(false);

    final WebSettings webSettings = menuView.getSettings();
    menuView.getSettings().setJavaScriptEnabled(true);
    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
    webSettings.setSupportMultipleWindows(true);

    webSettings.setPluginState(PluginState.ON);
    webSettings.setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

    menuView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    menuView.getSettings().setBuiltInZoomControls(true);
    // Below required for geolocation
    menuView.getSettings().setJavaScriptEnabled(true);
    menuView.getSettings().setGeolocationEnabled(true);

    webSettings.setGeolocationEnabled(true);

    webSettings.setJavaScriptCanOpenWindowsAutomatically(true);

Solution

  • // in oncreate 
    webview.setWebChromeClient(new wecrome());
    webview.getSettings().setJavaScriptEnabled(true);
    webview.getSettings().setLoadsImagesAutomatically(true);
    webview.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    webview.setWebViewClient(new MyBrowser());
    webview.getSettings().setPluginState(PluginState.ON);
    webview.loadUrl("http://www.example.net/locations/");
    
    //inner class 
    private class MyBrowser extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                view.addJavascriptInterface(new Object() {
                    @JavascriptInterface
                    public void performClick() throws Exception {
                        Log.d("LOGIN::", "Clicked");
                        Toast.makeText(googleplus.this, "Login clicked",
                                Toast.LENGTH_LONG).show();
                    }
                }, "login");
                return true;
            }
    
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                // TODO Auto-generated method stub
    
                System.out.println("started");
                pd.show();
                super.onPageStarted(view, url, favicon);
    
            }
    
            @Override
            public void onPageFinished(WebView view, String url) {
                // TODO Auto-generated method stub
                pd.dismiss();
                System.out.println("ends");
                super.onPageFinished(view, url);
    
            }
    
        }