Ver Mensaje Individual
  #1 (permalink)  
Antiguo 03/05/2013, 05:55
illooo
 
Fecha de Ingreso: mayo-2013
Ubicación: Sevilla
Mensajes: 1
Antigüedad: 9 años, 1 mes
Puntos: 0
imputStreamReader en Android 4.x

Buenas a todos:

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:
java.lang.Throwable: EventHub.removeMessages(int what = 107) is not supported before the WebViewCore is set up.
El código de la petición al servidor es:
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:
<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" />
También le tengo añadida a la aplicación la propiedad
Código:
android:hardwareAccelerated="true"
He probado muchas soluciones, pero ninguna da resultado.



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.