如何知道webview是否已完全加载或由于重定向而取消?

时间:2019-07-02 11:18:44

标签: android android-webview

如果我将 A.com 加载到new WebView(no history)中,并且网址重定向到 B.com,如果 WebView,WebView将保持黑色。 shouldOverrideUrlLoading 返回true。

在这种情况下,我想关闭WebView,但是由于重定向,如何确定它是否为空白。

不能与onPageFinished()一起使用,即使已重定向,也总是被调用

@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if(url.contains(B.com)){
        return true;
    }
}

1 个答案:

答案 0 :(得分:1)

看到您可以遵循此代码,

  1. 初始化WebView

    webView.settings.javaScriptEnabled = true
    webView.settings.loadsImagesAutomatically = true
    webView.scrollBarStyle = View.SCROLLBARS_INSIDE_OVERLAY
    webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null)
    
  2. 设置网络视图侦听器

    webView.webViewClient = object : WebViewClient() {
        override fun onPageStarted(view: WebView?, url: String?, favicon: Bitmap?) {
            super.onPageStarted(view, url, favicon)
            url?.let {
               // do what you want here, for example
                if(it != "determine url"){ 
                val returnIntent = Intent()
                returnIntent.putExtra("tag_bool", true)
                setResult(Activity.RESULT_OK, returnIntent)
                finish()
                }
            }
        }
        override fun onReceivedError(view: WebView, request: WebResourceRequest,
                                     error: WebResourceError) {
            super.onReceivedError(view, request, error)
            // show error 
            return true
        }
    
          override fun shouldOverrideUrlLoading(view: WebView?, request: 
     WebResourceRequest?): Boolean {
            // you can handle loading ui and show progress
            view?.loadUrl(url)
            return true
        }
    

    不要忘记在清单文件的应用程序标记中添加此行

    android:usesCleartextTraffic="true"
    

您可以了解更多信息,请查看此链接 https://developer.android.com/guide/topics/manifest/application-element#usesCleartextTraffic