2017-02-09 54 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方法对我没有好处 –