问题出现的场景很常见,比如webview 先加载一个oauth url,成功后重定向到url_b。那个按物理返回键的时候webview会goBack 到过度的oauth url,马上又被重定向到url_b。也就是返回键好像失效了。(当然快速按2次可以解决,可是用户不希望这样)
解决的思路是load(oauth_url)重定向到url_b 的时候先标记isGoBack=true.
在onPageStarted 中的url 是 oauth_url,但是
shouldOverrideUrlLoading中是url_b.
根据两次的不一样可以进行如下处理和标识位复位
1. isGoBack = false;
2. if (mWebView.canGoBack()) {
mWebView.goBack();
} else {
killWebProcess();
}
首先 我们Custom了 WebViewClient
mWebView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (!TextUtils.isEmpty(startUrl) && !startUrl.equals(url) && isGoBack&&System.currentTimeMillis() - resumeTime<600) {
isGoBack = false;
if (mWebView.canGoBack()) {