Etiquetas
La pregunta no es tan sensacionalista como parece. Hace unos días me avisaron de problemas para subir fotos a Menéame con Android KitKat. Era muy raro que diese problemas, está todo programado respetando estándares de HTML5 y Javascript. Descubrí que ese caso se debía a problemas de la gestión de memoria de Android y cómo la trataba Chrome (al ejecutar otro programa para seleccionar la imagen, si necesita memoria se la quita al Chrome, por lo que hay un «cambio de configuración», al volver a Chrome, éste recarga la página completa, en vez de «reconstruir» lo que tenía). Pero descubrí otro error aún peor y que sucede siempre: es imposible subir una fotografía. Lo probé con el Nexus 4 y con el 7, en ambos el mismo problema, da un error «fatal» al seleccionar cualquier foto.
Lo probé con el Firefox sobre los mismos dispositivos, y no hubo problemas (además de sorprenderme la velocidad de Firefox, ¡cómo ha mejorado!). Se puede observar el fallo («Error abrir archivo seleccionado» [sic]) en el siguiente vídeo que hice en el Nexus 4:
Visto lo visto, y que no parecía simple de solucionar, además que quería solucionar lo de compartir más fácilmente a Menéame desde un móvil, me decidí a desarrollar una pequeña app:
Esta app sólo crea una actividad, basada en WebView, que empotra el renderer HTML. Hasta la versión 4.3 de Android, este renderer era el del «webkit» básico, a partir de 4.4 (KitKat) ya se usa el Chromium (el proyecto libre del Chrome). Todo iba bien, y funcionaba muy rápido… hasta que probé la subida de ficheros: imposible, no funciona en KitKat, y es imposible arreglarla (al menos en teoría y con la información que hay hasta ahora).
Las WebView tienen una pequeña interfaz con unas pocas clases de Java para controlar cosas básicas, y también para que el programa haga algunas de las cosas que no hace la vista por sí misma, por ejemplo, seleccionar ficheros para el <input type=»file»> de HTML. Resulta que no había un API para ello, pero dado que es imprescindible para casi cualquier aplicación HTML5, la gente analizó el código fuente del navegador estándar de Android y encontró la función que se llama cuando se selecciona el campo de subir fichero. La implementé tal cuál, adaptadas a las diferentes versiones de Android:
Pero no funcionaba en KitKat, sólo en las versiones anterior, sin problemas. En KitKat ni se llaman esas funciones, no hace nada cuando se selecciona el campo.
Así fue que busqué, y veo que eliminaron esa interfaz, sin ninguna alternativa. Sólo dicen «no estaba documentada como oficial, y ya pensaremos una alternativa para futuras versiones de Android». En los comentarios queda claro cómo afecta a tantas aplicaciones, sobre todos a las de PhoneGap, que están basadas completamente en HTML5: con KitKat es imposible subir ficheros de apps programadas en HTML5.
Sumado a eso, el propio Chrome de Google también falla para subir imágenes.
Es decir, miles de apps que dejarán de funcionar en Android KitKat, por decisiones [estúpidas] de eliminar la única interfaz posible para poder subir ficheros desde el «navegador empotrado» para apps, y por fallos increíbles en el navegador por defecto, Chrome.
La pregunta es: ¿están perjudicando así a aplicaciones en HTML5 por simple estupidez? ¿O es una estrategia para que se usen apps completamente nativas? No hay otra explicación, en cualquier caso, vaya ceguera y/o ineptitud enorme de los ingenieros que toman decisiones de desarrollo en Android. Para miles de :facepalm:.
PS: Mientras tanto, si tenéis Android KitKat y queréis subir fotos en Menéame o cualquier otro sitio, tenéis que usar Firefox u Opera Mini. Si habéis desarrollado una app que usa WebViews, estáis jodidos, porque no hay otra alternativa, al menos hasta que salga el GeckoView for Android, pero le falta todavía mucho tiempo 😦
Pingback: Android KitKat… ¿pretenden matar el HTML5 en Android?
Cada vez más google se parece a la Microsoft de finales de los 90….
Tiene más pinta de chapuza que de decisión premeditada…al cambiar el modo de gestión de memoria en Chrome han causado problemas en casos como el que mencionas, otra gente se ha quejado porque ahora al cambiar de pestaña las páginas se recargan con más frecuencia y tarda un rato en recargar. No queda más remedio que usar Firefox, que por otra parte no es mala idea
Joder, apenas estoy aprendiendo a hacer phonegap
Lo siento pero a parte de erroneo me parece bastante sensacionalista. Acabo de hacer la prueba y si he podido subir una imagen a Menéame, desde un Nexus 4 con Chrome y KitKat.
@7
¿Erróneo? ya hay un vídeo arriba mostrando el error, aquí hay otro, con un Nexus 7 limpito y reseteado a fábrica unos días antes de actualizar: https://www.youtube.com/watch?v=TKr-aaX0550
El mismo error, con sitios diferentes, demostrado con lo mejor que puedo (aunque también lo dicen otros: https://www.webniraj.com/2013/11/08/nexus-5-and-android-4-4-kitkat-bugs-glitches/comment-page-1/#comment-109 )
Si dices que funciona, explica por lo menos dónde te ha funcionado, cómo lo has hecho, y con qué. Eso de las evidencias no te suena, ¿no?
Y eso sin contar con lo otro, aún más importante: https://code.google.com/p/android/issues/detail?id=62220
Esto con flash no pasaría…
Google siempre ha sido así, unos cutres ladrones de mierda.
Pingback: No basta con ser ingeniero (y II) | Ricardo Galli, de software libre
Pingback: No sé si Google se ha vuelto malo. Pero sí sé que se ha vuelto egoísta y desconsiderado » El Blog de Enrique Dans
Pingback: ¿Qué le falta a Android 4.4 KitKat para ser perfecto?
Pingback: ¿Qué le falta a Android 4.4 KitKat para ser perfecto? - Blog de Oscar Valenzuela B.
Aki la peña postea sin probar bien las cosas #7, seguro q no tienes actualizado a la 4.4 iluminado.