嗨,我正在开发使用 web 视图的 android。我的网络视图里面有不止一个页面。所以我的预期功能是,当我按下设备后退按钮时,它应该返回到上一个网页 url,当它在最后一个网页上时,它应该关闭该活动并返回上一个活动。我以以下方式尝试了它,它在新设备上运行良好,但在旧的 android 版本上无法正常运行。我的代码如下所示:
webView = new WebView(this);
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains(URLManager.URL_DICOM_BACK_PRESSED_URL)) {
processBackPressed();
return true;
} else {
return super.shouldOverrideUrlLoading(view, url);
}
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
if (failingUrl.contains(URLManager.URL_DICOM_BACK_PRESSED_URL)) {
processBackPressed();
} else {
showError("Server unreachable");
}
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
runOnUiThread(new Thread() {
@Override
public void run() {
super.run();
if(!webviewLoaded) {
webviewLoaded = true;
content.removeAllViews();
content.setOrientation(LinearLayout.VERTICAL);
// LLM.addInParent(content, textView, -1001, -999, 0);
LLM.addInParent(content, webView, -1001, 0, 1);
}
}
});
}
});
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
@Override
public void onBackPressed() {
if (webView != null && webView.canGoBack()) {
webView.goBack();
} else {
processBackPressed();
}
}
public void processBackPressed() {
super.onBackPressed();
finish();
}
上面的代码适用于一个新的 android 版本,但不适用于旧版本。我观察到shouldOverrideUrlLoading
的不适用于旧版本。
我做错什么了吗?需要一些帮助。谢谢你。