Puedes depurar el código de JavaScript con las APIs de console
de JavaScript y ver los mensajes de salida en Logcat. Si conoces la depuración de páginas web con Firebug o Web Inspector, es probable que también conozcas el uso de console
(como console.log()
). El framework WebKit de Android admite la mayoría de las mismas APIs, por lo que puedes recibir registros de tu página web cuando depuras en tu WebView
. En esta sección, se describe cómo usar las APIs de consola para la depuración.
Cómo usar las APIs de consola en WebView
Las APIs de la consola también son compatibles cuando se depura en WebView
. Debes proporcionar un WebChromeClient
que implemente el método onConsoleMessage()
para que los mensajes de la consola aparezcan en Logcat. Luego, aplica el WebChromeClient
a tu WebView
con setWebChromeClient()
.
Para obtener más información, consulta la documentación de Webview
.
En el siguiente ejemplo, se muestra cómo usar las APIs de la consola en WebView
:
Kotlin
val myWebView: WebView = findViewById(R.id.webview) myWebView.webChromeClient = object : WebChromeClient() { override fun onConsoleMessage(message: ConsoleMessage): Boolean { Log.d("MyApplication", "${message.message()} -- From line " + "${message.lineNumber()} of ${message.sourceId()}") return true } }
Java
WebView myWebView = findViewById(R.id.webview); myWebView.setWebChromeClient(new WebChromeClient() { @Override public boolean onConsoleMessage(ConsoleMessage consoleMessage) { Log.d("MyApplication", consoleMessage.message() + " -- From line " + consoleMessage.lineNumber() + " of " + consoleMessage.sourceId()); return true; } });
El ConsoleMessage
también incluye un objeto MessageLevel
para indicar el tipo de mensaje de consola que se está publicando. Puedes consultar el nivel del mensaje con messageLevel()
para determinar su gravedad y, luego, usar el método Log
adecuado o tomar otras medidas adecuadas.
Ya sea que uses onConsoleMessage(String, int, String)
o onConsoleMessage(ConsoleMessage)
, cuando ejecutas un método de la consola en tu página web, Android llama al método onConsoleMessage()
apropiado para que puedas informar el error. Por ejemplo, con el código de ejemplo anterior, se muestra un mensaje de Logcat como el siguiente:
Hello World -- From line 82 of http://www.example.com/hello.html
Los siguientes son recursos adicionales relacionados con la depuración:
Prueba funciones web experimentales
Al igual que en la página chrome://flags
de Google Chrome, también puedes probar funciones web experimentales en WebView
.
Para ello, sigue estos pasos:
Instala uno de los
WebView
canales previos al lanzamiento (beta, para desarrolladores o Canary){: .external}.Cambia el
WebView
canal en tu dispositivo de prueba al canal de versión preliminar instalado.Haz clic en el selector de WebView DevTools:
En DevTools, haz clic en Marcas y busca las funciones experimentales que quieras habilitar o inhabilitar. El cambio se aplica a todas las instancias de
WebView
en el dispositivo.Detén y reinicia la app para comenzar a probar las funciones nuevas.
Para obtener más información sobre cómo activar marcas, consulta la documentación de DevTools de WebView
.