ShouldOverrideUrlLoading no funciona / captura los clics del enlace mientras la página se está cargando

Estoy utilizando WebViewClient.shouldOverrideUrlLoading para capturar cualquier clic de enlace en el WebView. Esto funciona alrededor del 95% del tiempo, pero a veces simplemente no se llama.

Lo he notado en estas tres circunstancias:

  1. Cuando el enlace señala a la página ya están activados. Este no es un gran negocio, y hay un error reportado para ello .
  2. Mientras la página sigue cargando, si el usuario hace clic en un vínculo, rara vez lo captura. Sólo se abrirá el enlace sin necesidad de llamar a shouldOverrideUrlLoading .
  3. Aleatoriamente. Al experimentar con esto en los últimos meses me he dado cuenta de que a veces simplemente no lo captura. Es raro pero sucede.

Ahora mi pregunta es sobre todo cómo arreglar el problema 2, ya que los otros son menos de una gran cosa. Sin embargo, si alguien ha resuelto 1 o 3 me encantaría saberlo.

Además, debo mencionar que he probado diferentes valores de retorno en shouldOverrideUrlLoading y he notado que siempre volver true parece tener el mejor resultado, pero los problemas anteriores todavía suceden.

Si el HTML es tuyo, puedes reemplazar todos los enlaces tradicionales con llamadas a tu propio objeto Java, inyectados en el WebView mediante addJavascriptInterface() . Entonces ya no dependerá de shouldOverrideUrlLoading() .

De lo contrario, tal vez intente evitar que el usuario interactúe con la página hasta que onPageFinished() .

No me he encontrado con este problema, pero tampoco he hecho un uso extenso de WebView con contenido arbitrario.

He tenido un problema similar al intentar cambiar la página web con js en la página que modifica window.location . Resulta que la modificación del esquema de url / protocolo hace que la captura de shouldOverrideUrlLoading en shouldOverrideUrlLoading . Sé que esto no te ayuda ya que no eres el propietario del HTML, pero pensé que ayudaría a cualquier otra persona que tropiece con este problema.

  • Android WebViewClient onLoadResource () llamada agian después de onPageFinished () cuando targetSdkVersion es 19
  • Cargar la imagen en caché de WebView en un ImageView
  • WebViewClient.onPageStarted () llamó dos veces al especificar URL no existente a través de WebView.loadURL ()
  • Cómo obtener la página en blanco en Android WebViewClient
  • ¿WebViewClient y WebChromeClient se excluyen mutuamente?
  • ShouldOverrideUrlLoading se llama SOLAMENTE para ALGUNAS páginas web
  • El bloqueo del sistema al reemplazar shouldInterceptRequest en WebViewClient
  • Obteniendo webViewClient.shouldInterceptRequest () en android 2.x
  • Deje de cargar en webViewClient
  • El controlador onScaleChanged de WebView se llama varias veces
  • ¿Qué se considera onPageFinished en el WebViewClient para Android?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.