Как узнать, был ли веб-просмотр полностью загружен или отменен из-за перенаправления? - PullRequest
0 голосов
/ 02 июля 2019

Если я загружаю A.com в new WebView(no history) и URL-адрес перенаправляется на B.com, WebView останется черным, если WebView.shouldOverrideUrlLoading возвращает истину.

Я хочу закрыть WebView в этом случае, но как определить, является ли он пустым из-за перенаправления.

Не работает с onPageFinished(), он всегда вызывается, даже если он перенаправлен

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

1 Ответ

1 голос
/ 02 июля 2019

Смотрите, вы можете следовать этому коду,

  1. init 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...