07 febrero 2016

Solucionar problema de escritura en la tarjeta externa en Android KitKat

Recientemente instalé una rom de Cyanogenmod 11 a mi Redmi 2, encontrándome con un problema en la cámara de fotos que se colgaba cuando le ponía como medio de almacenamiento la tarjeta externa. Como había cambiado recientemente la microSD para meterle una mayor, no sabía bien si era un problema de compatibilidad con mi tarjeta de memoria, bien sea con el tamaño o el formato de la misma. Tampoco sabía si el problema podía venir de la rom de CM, de la versión de android, la propia aplicación de la cámara o incluso algún fallo del hardware.

Más tarde vi que el problema de la escritura en la tarjeta de memoria también le afectaba a la grabadora, así que fui descartando posibilidades hasta encontrar que el error estaba en la propia versión de Android, ya que Google introdujo una novedad en Kitkat acerca de los permisos de escritura en la tarjeta de memoria externa, para evitar que las aplicaciones crearan múltiples carpetas o escribieran en aquellas de las que no eran propietarias.

Hay varias aplicaciones en la store de google que prometen solucionar el problema y todas ellas requieren tener el movil rooteado. A mí eso de dar permisos de super usuario a una aplicación que no se que es lo que va a hacer no me gusta nada, así que investigando un poco encuentras que la solución es sencilla y la puedes hacer tú mismo:

Con un explorador de archivos que tenga permisos de super usuario (ES File Explorer, Root Explorer, etc...) tenemos que ir a la siguiente carpeta y localizar el archivo:

 /system/etc/permissions/platform.xml

Podemos copiar el archivo a otra carpeta de la memoria interna del móvil que no requiera de permisos especiales de lectura y escritura, para poder editarlo. Tenemos que buscar la línea donde salga android.permission.WRITE_EXTERNAL_STORAGE, y tendremos que añadirle una línea de código, para que se muestre así:

<permission name="android.permission.WRITE_EXTERNAL_STORAGE" >
    <group gid="sdcard_r" />
    <group gid="sdcard_rw" />
    <group gid="media_rw" />
</permission>
<permission name="android.permission.WRITE_MEDIA_STORAGE" >
    <group gid="sdcard_rw" />
    <group gid="media_rw" />
</permission>

Guardamos los cambios, y sobreescribimos el archivo en el directorio antes mencionado. Para poder escribir en esta carpeta tendremos que tener la carpeta /system con permisos de escritura, y es precisamente para lo que necesitamos root. Una vez hecho esto, reiniciamos nuestro móvil y las apps ya tendrán permiso para escribir en la SD al igual que lo hacían en Android Jelly Bean.

View My Stats