我目前正在开发一个网络应用程序。
我通过覆盖默认的无互联网连接页面制作了一个自定义互联网错误页面。该代码工作正常,在互联网连接恢复后 webView 加载主页但是,
问题:如果我按返回按钮加载主页后,应用程序再次显示自定义 Internet 错误页面。
webView的代码: -
'''
private void webview() {
progressBar = findViewById(R.id.progressBar);
wv1 = (WebView) findViewById(R.id.webView);
wv1.getSettings().setRenderPriority(WebSettings.RenderPriority.HIGH);
wv1.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
wv1.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
wv1.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
wv1.getSettings().setAppCacheEnabled(true);
wv1.getSettings().setSaveFormData(true);
wv1.clearCache(false);
wv1.getSettings().setJavaScriptEnabled(true);
wv1.getSettings().setDomStorageEnabled(true);
wv1.getSettings().setDatabaseEnabled(true);
wv1.getSettings().setAllowFileAccess(true);
wv1.getSettings().setAllowContentAccess(true);
wv1.getSettings().setUseWideViewPort(true);
wv1.getSettings().setLoadWithOverviewMode(true);
wv1.getSettings().setMinimumFontSize(1);
wv1.getSettings().setMinimumLogicalFontSize(1);
wv1.setInitialScale(1);
wv1.setWebViewClient(new WebViewClient(){
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
if (!isNetworkConnected()){
loadCustomUrl();
}else {
super.onReceivedError(view, request, error);
}
}
@Override
public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {
handler.proceed();
}
});
wv1.setWebChromeClient(new WebChromeClient(){
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
public boolean onShowFileChooser(WebView mWebView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams)
{
if (uploadMessage != null) {
uploadMessage.onReceiveValue(null);
uploadMessage = null;
}
uploadMessage = filePathCallback;
Intent intent = fileChooserParams.createIntent();
try
{
startActivityForResult(intent, 100);
} catch (ActivityNotFoundException e)
{
uploadMessage = null;
Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show();
return false;
}
return true;
}
});
loadHomeUrl();
}'''
覆盖 onBackPressed 方法:-
'''
@Override
public void onBackPressed() {
if (wv1.canGoBack()) {
wv1.goBack();
} else {
if (doubleBackToExitPressedOnce) {
super.onBackPressed();
return;
}
this.doubleBackToExitPressedOnce = true;
Toast.makeText(this, "press BACK again to exit", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
doubleBackToExitPressedOnce = false;
}
}, 2000);
}
}'''