Estoy creando una aplicación que contiene un webView y recibo unos datos por JSon (usando la liberría gson) para lanzar notificaciones.
El caso es que la aplicación funciona perfectamente en cualcuier teléfono, pero cuando lo uso en android 4.X me salta cuando intenta hacer el imputStreamReader y me suelta un error, que no me tira la excepción pero no envia la peticion ni recibe los datos.
El error es:
Código:
El código de la petición al servidor es:java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up.
Código:
try { Map<String, String> datosEnv = new HashMap<String, String>(); datosEnv.put("f_act", fechaFile[0]); datosEnv.put("h_act", fechaFile[1]); Log.e("FNot", fechaFile[0] + " " + fechaFile[1]); // Creamos la cadena con los datos en formato JSON Gson gson = new Gson(); String jsonOutput = gson.toJson(datosEnv); // Usamos URLencode para poder enviar la cadena jsonOutput = URLEncoder.encode("fecha", "UTF-8") + "=" + URLEncoder.encode(jsonOutput, "UTF-8"); // Establecemos la conexion y enviamos los datos URL url = new URL("http://www.urldepruebas.com/notif/json.php"); URLConnection con = (URLConnection) url.openConnection(); con.setDoOutput(true); OutputStreamWriter wr = new OutputStreamWriter( con.getOutputStream()); wr.write(jsonOutput); wr.flush(); // Recibimos los datos BufferedReader recv = new BufferedReader(new InputStreamReader( con.getInputStream())); String s = recv.readLine(); String cadena = null; while (s != null) { cadena = s; s = recv.readLine(); Log.e("Recibo", cadena); } StringTokenizer st1 = new StringTokenizer(cadena, "[]"); String[] eventos = new String[st1.countTokens()]; StringTokenizer st2; String id, nom, des; for (int i = 0; i < eventos.length; i++) { eventos[i] = st1.nextToken(); st2 = new StringTokenizer(eventos[i], ","); id = st2.nextToken(); nom = st2.nextToken(); des = st2.nextToken(); Log.e("Contenido", id + " " + nom + " " + des); new Notificacion(gACa, id, nom, des).enviarNot(); } } catch (Exception e) { // System.out.println(e.getMessage()); }
Las propiedades del WebView son:
Código:
// webview y propiedades webView = (WebView) findViewById(R.id.webview); webView.getSettings().setJavaScriptEnabled(true); webView.setVerticalScrollBarEnabled(false); webView.setWebViewClient(new WebViewClient() { // evita que los enlaces se abran fuera nuestra app en el navegador // de android @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.e("dir", url); if (url.indexOf("tel:") > -1) { startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url))); return true; } else { return false; } } });
Y estos son los permisos del manifest.xml:
Código:
También le tengo añadida a la aplicación la propiedad <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <uses-permission android:name="android.permission.VIBRATE" /> <uses-permission android:name="android.permission.CALL_PHONE" />
Código:
He probado muchas soluciones, pero ninguna da resultado.android:hardwareAccelerated="true"
Un saludo y gracias
PD: El lunes intentaré hacer una copia completa del error, que no tengo ahora mismo a mano el teléfono para pruebas.