Share on Google+Share on FacebookTweet about this on Twitter

Actualizado: A fecha de de 2 de Junio, las versiones a partir de la 2.10.509 (aun no disponibles en Play Store pero deberían de estarlo dentro de poco tiempo) disponen de opciones personalizadas para permitir o denegar la descarga automática de imágenes, vídeos o audio dependiendo de si estemos por WIFI, por datos o en Roaming. Gracias por replantearse la política de empresa al respecto.

 

Lo cierto es que ha sido un amigo el que me ha dicho esta mañana que la opción para permitir o denegar la descarga automática de imágenes le había desaparecido con la última actualización. En realidad no se trata de la última actualización, es un cambio que hace ya muchos meses efectuó WhatsApp, lo único que sucede es que para que la aplicación no falle por tener activadas ciertas opciones (y no tener que “resetearlas”), todos aquellos que tenían dicha opción deshabilitada han mantenido teniendo dicha opción dentro de los ajustes de su WhatsApp. En cambio, todo aquel que instalase de nuevas la aplicación o tuviese que eliminar los datos de ella por cualquier motivo, no tiene acceso a ella. Por suerte para todos, la aplicación continúa manteniendo exactamente el mismo comportamiento, simplemente oculta la opción para que no pueda modificarse… y es ahí donde entramos nosotros.

Sinceramente no entiendo cual ha sido la razón por la que WhatsApp a quitado la opción, me parece genial que por defecto la mantuviese activada, pero siempre con la opción de quitarla. Del FAQ de su web nos dicen lo siguiente:

“As part of a product decision, we have removed the ability to turn off auto-download images from recent versions of WhatsApp. If your friends still see this feature on their phones, they most likely have an older version of the app.

We understand your concern for data usage; however, images on WhatsApp are down-sized, resulting in a typical image size and data usage of approximately 40-50KB per image. In comparison, the average web page on the internet is 1 MB (1000 KB).

Keep in mind this applies only to image files and not to videos or audio notes, since videos and audio files are significantly larger.

Therefore, even if your WhatsApp contacts send you 100 images every day for an entire month (30 days), that would total to 135MB of data usage. Of course, that’s an extreme case and more often the average WhatsApp user receives 19 images per month; this is equivalent to 855KB, or 0.83MB per month. Rest assured, this amount is covered by even the smallest data plans.

You can also check your actual data usage within WhatsApp by going to Settings > Account Info > Network Usage

You can see the exact media data usage under “Media bytes received.”

In order to stop the WhatsApp images from appearing in your gallery, we recommend that you create a .nomedia file or folder inside of your WhatsApp images folder. You can do this using a file explorer, or by hiding the folder in Quickpic.”

Sinceramente me parece una explicación bastante mala. Traduciendo y resumiendo, la única explicación que dan de dicho cambio es que las imágenes transferidas por WhatsApp ocupan muy poco (aparentemente), y pro tanto no hay razón por no descargarlas automáticamente. Y para aquellos que puedan pensar: “Ya no se trata de lo que ocupen, también una cuestión de privacidad porque CUALQUIERA puede enviarte cualquier imagen, y si por defecto se autoacepta esta va a la galería.” WhatsApp termina respondiendo que si no se quiere que aparezcan que se cree un archiv ollamado “.nomedia” en la carpeta raiz de WhatsApp para inhibir que aparezca en la galería.

Es cierto que Android permite ese “truco” para inhibir que una carpeta sea listada en la galería o en el reproductor de medios, pero sigo sin entender porqué pasamos de tener una opción que TOODOS podían activar o desactivar a voluntad sin mayores problemas, a tener que fastidiarnos y tener que hacer “trucos” molestos si queremos apalear solo algunos de los problemas que implica tener dicha opción activada.

En el artículo de WhatsApp: Lo que todo buen bromista debería de conocer, creo que dí motivos más que suficiente del peligro que implica tener esta opción marcada, ahora marcada o sí o también:

a) Cualquier puede enviarnos una imagen, eso implica que conozcamos al usuario o no puede mandarnos el tipo de imagen que queramos y el móvil la recibirá sin problema. Esto significa que si un desconocido nos manda a nuestro teléfono la imagen de un muchacho haciendo guarrerías con cualquier animal, esa imagen va directamente a nuestra galería.

b) Por mucho que diga WhatsApp, es un gran consumo de ancho de banda, y si estamos dentro de grupos numersos en los que se suelen compartir imágenes, el ancho de banda puede incrementarse considerablemente. Por otro lado es mentira que la media de los datos usados sean de 40-50KB por imagen, si hago media de lo que tengo ahora mismo en mi galería, me da 80KB, una horquilla entre 70-130KB, dependiendo de las imágenes. Eso significa que esas 100 imágenes al día que dice WhatsApps tendría un consimo de ) serían entorno a los 380MB, SOLO en imágenes de WhatsApp.

c) Como ya expliqué en el artículo anteriormente citado, puedo crear en un momento una imagen de 1GB si quiero, y dado que el usuario no tiene forma humana de deshabilitar la descarga automática de la imagen, su dispositivo empezará a descargar dicha imagen de 1GB me conozca o no me conozca, y en todo caso podrá cancelar la descarga (si es que puede) una vez se de cuenta de lo que está pasando, lo cual es también relativo porque se le puede engañar al sistema para que el usuario crea que la imagen ocupa tan solo 10KB. dicho de otro modo, forzando al usuario a dicha opción, lo condena a quedarse sin datos si cualquiera que tenga su número le gusta ser un bromista pesado. Y si dicha imagen la manda en un grupo de 20 personas, seguramente ni siquiera se daran cuenta de lo que ha pasado, hasta que estén bien jodidos.

 

Visto esto, solo nos quedan tres soluciones… cuatro. La primera pasa por empezar a usar en la medida de lo posible HangOut, que aunque no sustituye todas las funciones de WhatsApp, es mucho mejor, pero eso ya entra dentro de lo personal de cada cual.

La segunda y posiblemente casi cualquiera pueda realizarla, pasa por instalar una versión antigua de WhatsApp que permitiese aun tener dicha opción, posiblemente alguna versión 2.8.xxx, estoy seguro que por google pueden encontrase. La idea por tanto sería sencilla, desinstalar WhatsApp, instalar la versión vieja, desmarcar la opción de descarga automática, actualizar a la versión más actual y listo. Cualquiera podría realizar este proceso, siempre y cuando WhatsApp no haya bloqueado ya las versiones viejas.

La tercera opción e igualmente sencilla, aunque tan solo temporal de nuevo, radica en editar el archivo de configuración de WhatsApp y añadirle la opción que deseamos. Como he dicho, Whatspp al iniciarse chequea si ya existía dicha opción en el archivo de configuración. Si existe la deja, si no existe (porque sea una instalación limpia o cualquier otro motivo, la opción no existe. El problema de este método es que necesitamos tener el dispositivo Rooteado, porque necesitamos editar el archivo de configuración de WhatsApp que se encuentra en la partición /data, exactamente en la ruta “/data/data/com.whatsapp/shared_prefs/com.whatsapp_preferences.xml”. Al encontrarse en la carpeta data de la aplicación, implica que dicho archivo tan solo lo puede editar la misma aplicación o un usuario con permisos superiores, es decir root.

Suponiendo que tengamos el dispositivo rooteado, tan solo hay que editar dicho archivo y añadir en la lista de opciones:

Para evitar que la aplicación tenga acceso a él mediante lo hacemos, podemos detener la aplicación por completo en el administrador de aplicaciones de Android, realizar la modificación y lanzar de nuevo la aplicación. Como si por arte de magia fuese la opción vuelve a aparecer (y con la opción desactivada por defecto). El único inconveniente es que no sabemos cuando WhatsApp eliminará por completo dicha opción, o que tendremos que repetir el proceso si realizamos una instalación limpia o se borran los datos de la aplicación.

La cuarta opción es la más útil, pero la más “complicada”, ya que de nuevo se trata de modificar el código de la aplicación. En este caso la modificación es muy muy sencilla, porque el código de WhatsApp ya permite dicha opción. Si lo que hace WhatsApp es chequear si la opción está o no está presente en el archivo de configuración, traducido a código lo que buscamos es un salto condicional, un sencillo “if”: Si la opción existe mostrar lo siguiente… Si sabemos encontrar ese pedazo de código, bastaría simplemente con eliminar la condición, con lo que la opción aparecería SIEMPRE, con independencia de que sea una instalación nueva o vieja. La complejidad de nuevo radica en que hay que:

a) Decompilar la aplicación
b) Encontrar el archivo y el lugar exacto de la edición
c) Saber que editar/añadir/eliminar
d)Saber recompilar la aplicación
e) Firmar la aplicación de nuevo (si queremos que Android la acepte perfectamente, pero al iniciarla tendremos q restaurar una copia de seguridad porque detectará que se ha modificada) o dejarle los certificados antiguos para que no de error al verificar la cuenta (pero entonces tendremos que tener parcheada la verificación de certificados). Personalmente me gusta más siempre la primera opción, pero cada cual escoge su sistema favorito, en el caso de WhatsApp se podría terminar de modificar la aplicación para que tampoco se quejase en la verificación de los certificados, pero sería más edición.

Todos los demás puntos los hemos visto aquí varias veces, así que tan solo voy a ayudar d enuevo con el punto b y el punto c.

En este pequeño cambio, solo hay un archivo implicado, una sencilla búsqueda con findstr en Windows o grep en linux rápidamente nos pondría en la pista de lo que estamos buscando. Es muy sencillo, sabemos como se llama la opción, así qeu si buscamos por “autodownload” llegaremos al id en hexadecimal de la etiqueta, y si buscamos por dicho id, llegaremos al archivo implicado y a la sección de este. Si miramos un poquito más arriba de donde encontramos el id de la etiqueta, tenemos la condición que se ejecuta, con lo que tan solo habría que eliminar la instrucción if que lo precede. Esto en lenguaje de alto nivel sería trivial, en Dalvik es un poquito más engorroso porque hay que saber que borrar o que no borrar, no leemos un sencillo if… sino toda una estructura basada en registros que va cargando los valores necesarios para invocar la condición. Es un bloque pequeño de todos modos, y tampoco es complicado verlo ni eliminarlo

Una vez terminada la edición, se guardan los cambios, se recompila, se firma, se vuelve a colocar la aplicación y aquí no ha pasado nada, volveremos a tener nuestra nuestro WhatsApp con la opción deseada. Claro que si actualizamos perderemos el cambio y tendríamos que volver a realizarlo, lo cual puede ser un poco engorroso para muchos. De ahí a que llega un momento en que es más sencillo crearte tus propias herramientas que automatizan todo el proceso por tí. En cualquier caso, de nuevo se trata de ser didáctico, y de paso decirle a los chicos de WhatsApp que no tiene ningún sentido el cambio que han realizado, lo cual evidentemente nos dice que tienen otros motivos que no están contándonos 😉

whats