Mapview inside a webview freezes if I come back from google maps app

46 views Asked by At

So, I have a webview in which I am loading a public website which shows mapview inside the website and on "Navigate" click, I am opening Google maps to redirect user there, this also works fine but when I come back from Google maps app, my UI(mapview inside webview) freezes while back press of device and hamburger icon are clickable, only the container is not responding, can anyone help?

Sharing code -

public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        webViewClient = new WebViewClient() {
            @Override
            public void onLoadResource(WebView view, String url) {
                super.onLoadResource(view, url);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                if (url == null || url.startsWith("http://") || url.startsWith("https://"))
                    return false;
                //need to handle geo, intent, mailto, tel, whats
                if (url.startsWith("intent://")) {
                    Intent intent;
                    try {
                        //default is ACTION_VIEW
                        intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
                        if (intent != null && getActivity() != null && getActivity().getPackageManager() != null) {
                            if (intent.resolveActivity(getActivity().getPackageManager()) != null) {
                                startActivity(intent);
                                if (mWebView.canGoBack()) {
                                    mWebView.goBack();
                                }
                            } else {
                                String fallbackUrl = intent.getStringExtra("browser_fallback_url");
                                if (fallbackUrl != null) {
                                    mWebView.loadUrl(fallbackUrl);
                                    return true;
                                } else {
                                    return false;
                                }
                            }
                        }
                    } catch (Exception ex) {
                        return false;
                    }
                }
                return false;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                progressBar.setVisibility(View.GONE);
            }
        };

        webChromeClient = new WebChromeClient() {
            @Override
            public void onGeolocationPermissionsShowPrompt(String origin, GeolocationPermissions.Callback callback) {
                callback.invoke(origin, true, false);
            }

            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                if (mPageLoadListener != null)
                    mPageLoadListener.onTitleReceived(title);
            }
        };

        mWebView.getSettings().setLoadWithOverviewMode(false);
        mWebView.getSettings().setUseWideViewPort(false);
        mWebView.getSettings().setBuiltInZoomControls(true);
        mWebView.getSettings().setSupportZoom(true);
        mWebView.getSettings().setDisplayZoomControls(false);
        mWebView.getSettings().setDomStorageEnabled(true);
        mWebView.getSettings().setNeedInitialFocus(true);
        mWebView.getSettings().setGeolocationEnabled(true);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.getSettings().setDatabaseEnabled(true);
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT) {
            mWebView.getSettings().setDatabasePath("/data/data/" + mWebView.getContext().getPackageName() + "/databases/");
        }
        reload();
    }


 @Override
    public void onResume() {
        super.onResume();
//        mWebView.setWebViewClient(webViewClient);
//        mWebView.setWebChromeClient(webChromeClient);
//        if (getActivity() instanceof WebPageLoadListener) {
//            setPageLoadListener((WebPageLoadListener) getActivity());
//        }

    }

    @Override
    public void onPause() {
        super.onPause();
//        mWebView.stopLoading();
//        mWebView.setWebViewClient(null);
//        mWebView.setWebChromeClient(null);
//        setPageLoadListener(null);
    }

Even if I uncomment the code in onPause and onResume, it does not work.

0

There are 0 answers