Webview执行goBack不能返回(重定向)
问题1:
在某些小米手机机型、一加手机机型出现WebView加载网址重定向后,无法通过WebViewClient的shouldOverrideUrlLoading方法返回false去解决返回问题。
解决方法
private String urlFinish;
private String urlStr;//webView初始加载url,记得赋值
...
private final WebViewClient viewClient = new WebViewClient() {
private String startUrl;
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
LogUtils.e("===onPageStarted=" + url);
startUrl=url;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
LogUtils.e("===onPageFinished=" + url);
urlFinish=url;
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(startUrl!=null && startUrl.equals(url))
{
view.loadUrl(url);
}
else
{
//交给系统处理
return super.shouldOverrideUrlLoading(view, url);
}
return true;
}
}
返回时的操作
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KEYCODE_BACK) {
goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
private void goBack() {
if(webView.canGoBack()){
if(webView.getUrl().equals(urlStr)){
finish();
}else{
if(urlStr.equals(urlFinish)){
finish();
}else{
webView.goBack();
}
}
}else{
finish();
}
}