Android Webview: no se puede llamar a determinaVisibilidad (): nunca vi una conexión para el pid

Tengo una vista web de Android y cuando hago clic en un enlace para descargar un archivo (imagen de pdf, etc.) recibo un mensaje de error.

Error message: Cannot call determinedVisibility() - never saw a connection for the pid 

¿Alguna idea de lo que hago mal? ¿Quién puede ayudar, por favor?

Solo un poco de configuración:

  webview.getSettings().setJavaScriptEnabled(true); webview.getSettings().setDomStorageEnabled(true); 

Obtuve el mismo error y la solución de Burhans no me ayudó. Creo que las cosas salieron mal cuando tratas de cargar diferentes URL muy rápido.

Editar: Encontré una solución mejor Los créditos van al usuario2652394 WebView debe cargarse dos veces para cargar correctamente

Tienes que hacer algo como esto:

  webView.postDelayed(new Runnable() { @Override public void run() { webView.loadUrl(landingpage); } }, 500); 

Este problema en mi caso se produce por una configuración incorrecta en las propiedades de diseño. Yo había usado:

   

En lugar de establecer:

   

Los problemas se resolvieron cuando eliminé la configuración de “layout_alignParent”.

Enfrenté el mismo problema.

Se resolvió dando a WebView una altura estática (es decir, 300 pb) o especificando el valor de minHeight.

Así es como he solucionado un problema similar:

  mWebView.setWebChromeClient(new WebChromeClient()); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setDomStorageEnabled(true); mWebView.setWebViewClient(new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view,String url) { return false; } }); mWebView.loadURL(... 

Fondo

Aquí está el código fuente del método en el motor del navegador que da el error ( BindingManagerImpl.java ) desde la fuente de Chromium :

 @Override public void determinedVisibility(int pid) { ManagedConnection managedConnection; synchronized (mManagedConnections) { managedConnection = mManagedConnections.get(pid); } if (managedConnection == null) { Log.w(TAG, "Cannot call determinedVisibility() - never saw a connection for the pid: " + "%d", pid); return; } 

Análisis

Es una advertencia de renderizado del contenido.

Las llamadas consecutivas a loadUrl causan una condición de carrera . El problema es que loadUrl("file://..") no se completa de inmediato, por lo que cuando se llama a loadUrl("javascript:..") a veces se ejecutará antes de que la página se haya cargado.

Detalle

Para más detalles, vea esta respuesta de stackoverflow.

Tarde para ir de fiesta, pero podría ayudar a algunos. Puede sonar tonto como el infierno, pero el error que cometí fue no agregar http:// al comienzo de la URL.

Compruebe si el permiso de internet está configurado correctamente en el archivo Manifest. Asegúrese de que la etiqueta de permiso esté fuera de su etiqueta de aplicación.

  

Espero que esto pueda ayudar a alguien.

Encontré una solución mediante el método onPageFinished lugar de shouldOverrideUrlLoading . También proporciona la URL necesaria en la lista de argumentos.

El único truco es establecer un control para que la lógica principal del método (en mi caso, hacer un Toast) no se onPageFinished cuando onPageFinished se onPageFinished en la carga de la página.

 mWebView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Log.d("download",url); } }); 

Me enfrenté al mismo problema. Puedo solucionar mi problema dando este código:

 webView.postDelayed(new Runnable() { @Override public void run() { webView.loadUrl(url); } }, 500); 

en lugar de:

 webview.loadUrl(url); 

luego, establezca que la url comience con https://