我有同樣的問題太多,而且知道如何解決它。這就像你的。當我點擊第一個鏈接( 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這將有助於 –