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.