«

»

may 07 2012

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://code.google.com/android");


Como veis el código es muy sencillo y no requiere mayor comentario, espero que os sea de utilidad.


vía | Ingens Blog


Acerca del autor

JMPergar

Mobile Developer at @BeRepublic & Founder of @AndroCode. Silver Speaker & Member of Core Team at @GDGBarcelona.

  • http://adaframework.com DesAndrOId

    Muy bueno, si señor.

    GRACIAS

  • Jonathan García

    Importante lo que se resalta en el comentario del código donde dicen que hay que habilitar el javascript

  • César

    Buenas, me encuentro con una duda…., si el código java realiza un submit() para rellenar un formulario… ¿ como detecto que se ha cargado la página nueva ?… ¿ en el mismo evento OnPageFInished???..

    Gracias.