2011-08-10 26 views
9

Android webview hakkında bir sorum var.Android WebView - URL yeniden yönlendirmede yeniden gezinme

varsayın URL URL B'ye yönlendiren bir URL başka url yönlendirilir ediliyorsa o URL A açmaya çalışırsa Benim android uygulama, webview otomatik URL B

yönlendirir

, ben Bu URL'lerin her ikisi de webview geçmişinde saklandığını görüyor. Şimdi web görüşüm geçmişim [,, URL A, URL B]

'dan oluşur. Geriye doğru anahtar URL B web sayfasından, web görünümü, URL B'ye yeniden yönlendiren URL A'yı yüklemeyi deneyecektir. Geriye çift tıklamanız gerekir. Geri dönmek için tıklayın A

Bu sorunu nasıl çözebilirim? öntanımlıyı sert anahtar arka eylemi overide için OnBackPressed() aşırı geçtiğimiz 2 saat :(

+0

http://stackoverflow.com/questions/11992478/dead-loop-in-android-webview-backkey-for-redirect-href-link Bu, –

cevap

0

deneyin dan Mücadele. Orada u anki faaliyeti bitirmek veya istediğiniz nasıl kontrol edebilirsiniz.

+0

'un size yardımcı olmayacaktır. URL'nin yönlendirilmiş bir URL mi yoksa normal URL mi olduğunu nasıl öğrenebilirim? Ayrıca, web görüntüleme geçmişinden bir partikül URL'si silmek mümkün mü? – Kumar

4
private class HelloWebViewClient extends WebViewClient { 
} 

mWebView.setWebViewClient(new HelloWebViewClient()); 

geçersiz kılma durumunda shouldOverrideUrlLoading(), o zaman. return false doğru yolu olmayabilir ama benim için çalışıyor.

+2

Bu kabul edilen cevap olmalı. API, bunu, ilk etapta tetikleyen şeydir, çünkü API, arka yığına eklenmiş, ortak bir yönlendirme (arka yığına eklenmeyen) olarak algılanmayan açık bir URL yükü olarak gördüğü için sorunu tetikler.). – tinsukE

+0

Bunun kabul edilen cevap olması gerektiğine katılıyorum. 'False' iadesi beklenen sonuçları verir. https://developer.android.com/reference/android/webkit/WebViewClient.html –

9

ben de aynı sorun var ve bunu çözmek için yolunu bulmuştur. o seninki gibi. Ben (ilk bağlantıyı tıkladığınızda www.new.a) diğer bağlantıyı otomatik olarak yönlendirir (mobile.n ew.a). Genellikle bağlantılar iki veya üç yönlendirme yapar ve çözümüm neredeyse her yönlendirme bağlantısında çalışır. Umarım bu cevap annyoing yönlendirme linkleri ile size yardımcı olur.

Sonunda bunu anladım. Dört API'lı bir WebViewClient'a ihtiyacınız var. WebViewClient'te shouldOverrideUrlLoading(), onPageStarted(), onPageFinished() ve doUpdateVisitedHistory() vardır. İhtiyacınız olan tüm API'lar API 1'dir, bu yüzden endişelenmeyin.

Böyle gider. OnKeyUp() yerine başka bir işlevi kullanabilirsiniz.

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++; 
      } 
     } 
+0

OnKeyUp yerine OnBackPressed() kullanıyorum ve çalışmıyor –

0

ben şimdi zaten sorun çözüldü sorunu da var.

solution

** WebViewClient sağlanıyorsa, return true

akım WebView url kolları demektir return false ise ana uygulama, url kolları gelir. **

İlgili konular