我有同样的问题太多,而且知道如何解决它。这就像你的。当我点击第一个链接( www.new.a)它会自动重定向其他链接(mobile.n ew.a)。通常链接重定向两个或三个,我的解决方案已经在几乎每个重定向链接上工作。我希望这个答案可以帮助你解决annyoing重定向链接问题。
我终于想通了。您需要带有四个API的WebViewClient。在WebViewClient中有shouldOverrideUrlLoading(),onPageStarted(),onPageFinished()和doUpdateVisitedHistory()。所有你需要的API都是API 1,所以不用担心。
它是这样的。你可以使用其他函数而不是onKeyUp()。
public class MyWebView extends WebView{
...
private int mRedirectedCount=0;
....
@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && this.canGoBack()) {
if(mRedirectedCount>0){
while(mRedirectedCount>0){
this.goBack();
mRedirectedCount--;
}
mRedirectedCount=0; //clear
}else{
this.goBack();
}
return true;
}
private class MyWebViewClinet extends WebViewClient{
boolean mIsPageFinished=true;
...
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
.....
if(mIsPageFinished){
mRedirectedCount=0; //clear count
}
.....
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
mIsPageFinished = false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
mIsPageFinished = true;
}
@Override
public void doUpdateVisitedHistory(WebView view, String url, boolean isReload) {
super.doUpdateVisitedHistory(view, url, isReload);
if(!mIsPageFinished){
mRedirectedCount++;
}
}
http://stackoverflow.com/questions/11992478/dead-loop-in-android-webview-backkey-for-redirect-href-link这将有助于 –