Habilitación de JavaScript general en WebViewClient

Mientras buscas una respuesta en google, parece que no soy el único atrapado con un problema que parece imposible de resolver.

He logrado crear un WebView con un WebViewClient personalizado, lo que hace posible que tenga un diálogo de proceso y muestre un mensaje de error si no se puede cargar una URL.

Pero esto crea un problema con JavaScript. La URL que estoy cargando tiene algún JavaScript que cambia algunos elementos HTML de los estilos CSS (mostrar u ocultar el elemento) o redirecciona a otra ubicación onclick – o tal vez incluso quiera mostrar un cuadro de alerta. Sin embargo, al utilizar WebViewClient, ninguno de ellos funciona.

Así es como carga una página:

public void loadUrl(String url) { final ProgressDialog dialog = ProgressDialog.show(myActivity.this, "", getString(R.string.loading), true); final WebView myWebView = (WebView) findViewById(R.id.webview); myWebView.setVerticalScrollBarEnabled(false); myWebView.setHorizontalScrollBarEnabled(false); WebSettings webSettings = myWebView.getSettings(); webSettings.setJavaScriptEnabled(true); myWebView.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Toast.makeText(myActivity.this, url, Toast.LENGTH_SHORT).show(); //Debugging purposes if (url.endsWith(".mp4")) { Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(Uri.parse(url), "video/mp4"); view.getContext().startActivity(intent); } else { view.loadUrl(url); } return true; } public void onPageFinished(WebView view, String url) { //Toast.makeText(myActivity.this, "Oh no!", Toast.LENGTH_SHORT).show(); dialog.dismiss(); } public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { Toast.makeText(myActivity.this, description, Toast.LENGTH_SHORT).show(); String summary = "<html><body><strong>" + getString(R.string.lost_connection) + "</body></html>"; myWebView.loadData(summary, "text/html", "utf-8"); } }); //End WebViewClient myWebView.loadUrl(url); } 

Esto probablemente podría hacerse de una manera más inteligente, pero soy nuevo en el desarrollo de Java y Android

¿Es posible que active JavaScript para WebViewClient? La eliminación de WebViewClient soluciona el problema, pero no puedo detectar eventos cuando la página se ha producido un error o se ha terminado de cargar.

No sé cuál es su problema exacto, pero puedo permitir el Javascript y un WebViewclient encargo sin ningún problema:

 WebView vistaWeb = (WebView) findViewById(R.id.webview); vistaWeb.setWebChromeClient(new MyCustomChromeClient(this)); vistaWeb.setWebViewClient(new MyCustomWebViewClient(this)); vistaWeb.clearCache(true); vistaWeb.clearHistory(); vistaWeb.getSettings().setJavaScriptEnabled(true); vistaWeb.getSettings().setJavaScriptCanOpenWindowsAutomatically(true); 

¿Las URLs Javascript se enrutan a través de shouldOverrideUrlLoading ? Prueba a comprobar que y si es así, devuelve false para enlaces como ese (para que la vista web maneje el enlace, no tu WebViewClient)

  • WebView loadUrl sólo funciona una vez
  • Android WebView para Facebook como botón
  • Android WebViewClient onReceivedError no se llama para un error 404
  • Sube la foto de la cámara y el archivador de archivos desde el campo INPUT de la vista web
  • WebView - no puede descargar el archivo sin solicitarlo dos veces?
  • ¿Cuál es la diferencia entre setWebViewClient y setWebChromeClient?
  • ¿Qué hace stopLoading () realmente hacer?
  • Cómo buscar Android ViewFlipper Ejemplo con varias WebViews
  • OnPageStart se llama muchas veces y onPageFinished no se llama para una sola página
  • Deshabilitar Android WebView / WebViewClient Iniciado favicon.ico Solicitar
  • WebView Crash por java.io.IOException: cerrar error: EIO (error de E / S) libcore.io.IoUtils.close (IoUtils.java:41)
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.