PDA

Ver la Versión Completa : problema cargar codigo javascript a partir de android 4.1


coper_8888
06/06/14, 08:35:39
Buenas,

Tengo un problema para ejecutar código javascript en versiones posteriores de android 4.1. Tengo un webview que cargo de manera local un archivo html que posee una gráfica highchats, utilizo el método addjavascriptinterface para declarar una clase que posee métodos para inyectar datos en javascript. Funciona todo pero en android 4.1.

He utilizado como se declara la documentación la anotación @JavascriptInterface encima de los métodos los cuales intento accedes en javascript pero no hay manera.

El código sería el siguiente:

webView_Analisis = (WebView) view.findViewById(R.id.webView_Analisis);

webView_Analisis.setWebViewClient(new WebViewClient());
WebSettings settings = webView_Analisis.getSettings();
settings.setJavaScriptEnabled(true);
webView_Analisis.addJavascriptInterface(new JavaScriptInterface(), "jsinterface");
webView_Analisis.loadUrl("file:///android_asset/index.html");

El código de la clase puente entre el código java android y javascript sería la siguiente:

public class JavaScriptInterface
{

JavaScriptInterface(){}

@JavascriptInterface
public JsonArray getLista()
{
return jsonArrayListaObjAnalisis;
}
}

Como intento pasar un tipo completo de datos como un array, he convertido el array a json y es este json lo que convierto y reconstruyo en javascript y utilizado para pintar la gráfica. Como digo, funciona bien pero en android 4.1, si alguien puede echarme una mano para hacer funcionar en versiones posteriores sería de gran ayuda.

Un saludo, gracias

coper_8888
06/06/14, 14:28:06
Solucionado, bastaba con el siguiente código. Elimino la utilización de la clase puente para comunicarme con javascript y simplemente llamo a la función declarada en javascript a la que le paso mi json.

webView_Analisis.setWebViewClient(new WebViewClient(){

@Override
public void onPageFinished(WebView view, String url) {

view.loadUrl("javascript: pintarGrafica('"+jsonArrayListaObjAnalisis+"')");

}

});

Un saludo!!