Inyectando JavaScript en un WebView de Android

Ayer os contábamos como usar un WebView pero existen ocasiones en los que necesitemos crear aplicaciones hibridas entre código web y código Android, en estos casos es posible que ambas parte de la app se comuniquen entre si como por ejemplo configurar desde la app algún parámetro y en inyectarlo directamente en un formulario web o seleccionar en configuraciones algún estilo y configurarlo mediante javascript en el entorno web. A continuación os comentamos como inyectar código javascript en un WebView para conseguir estos cometidos:

Para inyectar código javascript en un WebView en el que hemos cargado previamente una url bastará con usar el método loadUrl(String url) pero deberemos de tener una consideración. Si el código de la url sobre la que trabajaremos no ha sido cargado por completo corremos el riesgo de que la ejecución de nuestro código javascript provoque errores, es por esto que para inyectarlo nos aseguraremos de que la carga se ha realizado por completo. Para esto implementaremos un WebViewClient y sobrescribiremos el método onPageFinished(WebView view, String url).


final WebView webview = (WebView)findViewById(R.id.browser);
    /* JavaScript must be enabled if you want it to work, obviously */
    webview.getSettings().setJavaScriptEnabled(true); 
    /* WebViewClient must be set BEFORE calling loadUrl! */
    webview.setWebViewClient(new WebViewClient() {
        @Override
        public void onPageFinished(WebView view, String url)
        {
            webview.loadUrl("javascript:(function() { " +
                    "document.getElementsByTagName('body')[0].style.color = 'red'; " +
                    "})()");
        }
    }); 
    webview.loadUrl("http://programando-android.blogspot.com.es");

Comentarios

Entradas populares