Xposed Framework recupera la escritura en tarjeta SD para KitKat a través de un módulo

Como ya sabéis, desde que lanzaron la última versión de Android en Google han cambiado su forma de trabajar con tarjetas microSD. Como nosotros ya explicamos en su momento, Google pensó que quitar el almacenamiento externo en sus terminales y cambiar la forma de trabajar del mismo con la nueva versión de su sistema operativo se añadía seguridad para los usuarios finales, algo que muchos no han entendido de la misma manera y que ha costado críticas bastante duras a los de Mountain View.
¿Cuando empezó a implementarse esta nueva política para el almacenamiento externo? Todo esto comienza cuando Google decide retirarlo de sus dispositivos y comienza a fabricarlos sin batería extraíble. Bastantes fabricantes decidieron manter el slot para la tarjeta microSD, lo cual obligó a modificar el código fuente de Android por necesidad en algunos casos. Y debido a cambios en cómo estas últimas versiones de Android trabajan con las tarjetas de memoria externas, muchas aplicaciones ya no pudieron usarlas para escribir información o acceder a ellas. Por suerte para nosotros, que contamos con una comunidad de desarrolladores tan tremendamente activa y con Xposed Framework, las reglas del juego han vuelto a cambiar a favor del usuario, aunque de momento sólo sea para aquellos que tengan el acceso root en sus terminales.
Gracias al módulo HandleExternalStorage, vamos a poder modificar varios aspectos del sistema operativo sin meternos directamente a trastear el sistema de archivos. Esto nos permite aprovecharnos del nuevo permiso de Google para almacenamiento externo, llamado WRITE_EXTERNAL_STORAGE y que os detallamos a continuación:
1 <!-- Allows an application to write to external storage.
2 Starting in API level 19, this permission is not required to
3 read/write files in your application-specific directories returned by
4 android.content.Context#getExternalFilesDir and
5 android.content.Context#getExternalCacheDir. -->
6 <permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
7 android:permissionGroup="android.permission-group.STORAGE"
8 android:label="@string/permlab_sdcardWrite"
9 android:description="@string/permdesc_sdcardWrite"
10 android:protectionLevel="dangerous" />
11
12 <!-- Allows an application to write to internal media storage
13 @hide -->
14 <permission android:name="android.permission.WRITE_MEDIA_STORAGE"
15 android:permissionGroup="android.permission-group.STORAGE"
16 android:label="@string/permlab_mediaStorageWrite"
17 android:description="@string/permdesc_mediaStorageWrite"
18 android:protectionLevel="signature|system" />
Básicamente, este nuevo permiso replica prácticamente punto por punto el anterior pero con una pega: Las apps "normales" no pueden solicitarlo. Esta nueva versión de WRITE_EXTERNAL_STORAGE tiene un nivel de protección de tipo systemOrSignature, que limita esto a las aplicaciones de sistema -o lo que es lo mismo, aquellas incluidas por Google o por los fabricantes como preinstaladas en cada terminal y que suelen correr en segundo plano- y a cualquier cosa que firme el creador del permiso -que viene a ser el propio sistema operativo-.
El responsable de este módulo para Xposed Framework -podéis descargarlo a través de la aplicación- es el usuario de XDA Developers defim, que lo desarrolló para solucionar los problemas antes mencionados. Para todos aquellos con terminales rooteados y para los que esto suponga un dolor de cabeza os animamos a probarlo, a ver qué resultados os da. Podéis dejarnos vuestras impresiones en los comentarios.
Xposed Framework | Foro de XDA Developers (en inglés)