2017-02-09 79 views
2

我已經經歷了我在這裏找到的每一個相關帖子,但仍然無法使其正常工作。 我打開我的WebView與URL重定向(有時很多重定向),我想知道什麼時候加載是真的完成(URL完成加載沒有更多的重定向)。如何檢測何時在WebView中重定向完成?

有沒有什麼建議?

我讀過的每一篇文章都說要重寫shouldOverrideUrlLoading,但不管我做了什麼shouldOverrideUrlLoading不會被調用。

我的代碼:

mWebView = (WebView) findViewById(R.id.webview); 
WebSettings settings = mWebView.getSettings(); 
settings.setLoadWithOverviewMode(true); 
settings.setJavaScriptEnabled(true); 
settings.setLoadsImagesAutomatically(true); 
mWebView.setVerticalScrollBarEnabled(false); 
mWebView.setHorizontalScrollBarEnabled(false); 
mWebView.setWebViewClient(new MyWebViewClient()); 
mUrl = "http://cdn.something.com/something.html"; 
// mUrl = "https://www.google.com"; 
mWebView.loadUrl(mUrl); 



public class MyWebViewClient extends WebViewClient { 

    public MyWebViewClient() {} 

    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
     Log.d(TAG, "WebViewClient: shouldOverrideUrlLoading"); 
     return false; 
    } 

    @Override 
    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     super.onPageStarted(view, url, favicon); 
     Log.d(TAG, "WebViewClient: onPageStarted: url: " + url); 
    } 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     Log.d(TAG, "WebViewClient: onPageFinished: url: " + url); 
     super.onPageFinished(view, url); 
    } 

} 

謝謝

+0

您是否嘗試使用LoadResource方法? –

+0

檢查[這](http://stackoverflow.com/questions/2659000/java-how-to-find-the-redirected-url-of-a-url)答案..你必須檢查,如果URL重定向完成或不在''WebViewClient'的onPageStarted方法中...... – ELITE

+0

@ 555 **從來沒有**僅僅因爲你認爲「URL」應該用大寫字母來編輯源代碼**這樣就破壞了程序**。請*停止*通過編輯使問題變得更糟,特別是如果您對所涉及的編程語言不完善。 *你正在積極傷害這個社區*。 –

回答

1

要覆蓋這是在android N添加了新的shouldOverrideUrlLoading方法,

你必須重寫這兩種方法,使其工作(舊這是不贊成和新的)

@SuppressWarnings("deprecation") 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) { 
    final Uri uri = Uri.parse(url); 
    return handleUri(uri); 
} 

@TargetApi(Build.VERSION_CODES.N) 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) { 
    final Uri uri = request.getUrl(); 
    return handleUri(uri); 
} 

參考thisonPageFinished將在頁面加載完成後調用

+0

謝謝,這讓shouldOverrideUrlLoading着火,現在我會嘗試用它來實現我發現的建議。 onPageFinished被調用很多次,我的問題是找出哪一個肯定是最後一次調用。 –

+0

另外我想要在webview中處理重定向,所以handleUri方法對我沒有好處 –