我已经浏览了我在这里发现的所有相关帖子,但仍然无法使其发挥作用。 我打开带有重定向的URL的WebView(有时会有很多重定向),我想知道加载何时完成(URL加载完毕没有重定向)。
那么有什么建议吗?
我读过的每一篇文章都说覆盖了shouldOverrideUrlLoading,但无论我做什么,都不会调用onOverrideUrlLoading。
我的代码:
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 :(得分:1)
您要覆盖shouldOverrideUrlLoading
中添加的新android N
方法,
你必须覆盖两种方法才能使它工作(旧的方法已被弃用,新的方法)
@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);
}
参考this
,页面加载完毕后将调用onPageFinished
答案 1 :(得分:0)
在我的情况下,WebViewClient没有显示Webview上是否有更改,我认为这与正在运行的Web有关。
我可以使用OnProgressChanged从WebChromeClient获得该信息,但我不知道这是否对人们有帮助,但这是代码:
webview.webChromeClient = object : WebChromeClient(){
override fun onProgressChanged(view: WebView?, newProgress: Int) {
super.onProgressChanged(view, newProgress)
if (newProgress == 100) {
Log.d("testing", webview.getOriginalUrl())
Log.d("testing", webview.url)
}
}
}
这样,我可以知道加载了什么以及何时完成。