Cómo activar la característica de mover aplicación a memoria SD en una aplicación cordova

Cómo activar la característica de mover aplicación a memoria SD en una aplicación cordova

La mayoría de las aplicaciones de Android deberían ofrecer la posibilidad de escoger al usuario en donde la aplicación sería instalada. Es decir, no todo mundo puede comprar un dispositivo de ultima generación de 64GB de capacidad interna. Algunos de nosotros necesitamos en su lugar, comprar una memoria SD y expandir de esta manera el tamaño de la capacidad de almacenamiento.

Sin embargo, para algunas aplicaciones esta habilidad no tiene mucho sentido que digamos. Por ejemplo, con una aplicación que ofrece un widget o un Wallpaper para el dispositivo u otro tipo de servicio (como un manager de archivos), no serviría de mucho si la memoria SD es removida. En todo caso, si estás buscando como activar esta propiedad en una aplicación Cordova, significa que sabes lo que quieres hacer verdad?

Requisitos

Necesitamos modificar el manifiesto de tu aplicación de Android, sin embargo no lo vamos a hacer directamente. Pues esto no es una buena practica ya que cuando actualices tu proyecto, los cambios se perderan (incluso al emular tu aplicación). 

En vez de eso usaremos el plugin cordova-custom-config, que te permitirá modificar el manifiesto de android () desde el archivo config.xml de tu proyecto sin ningun problema. Para instalar el plugin, ejecuta el siguiente comando en tu linea de comandos:

cordova plugin add cordova-custom-config
REM O si usas phonegap
phonegap plugin add cordova-custom-config

Descubre más sobre el plugin visitando el repositorio oficial aquí.

Implementación

Normalmente, para todas y cada una de las aplicaciones hechas con cordova esta característica estará desactivada por defecto:

Cordova move to sd disabled

Afortudanamente, para activar esta caracteristica solamente tendrás que agregar una propiedad al manifiesto de android (AndroidManifest.xml). Usando el plugin cordova-custom-config, agregar esta propiedad será bastante fácil. Simplemente agrega la siguiente linea en tu archivo config.xml dentro del tag de plataforma Android (<platform ="android">):

<!-- Importante que la preferencia esté dentro del tag de Android -->
<platform name="android">
   <!-- Modifica el bloque de android-manifest y agrega la nueva propiedad android:installLocation con valor auto !-->
   <preference name="android-manifest/@android:installLocation" value="auto" />
</platform>

El valor de la propiedad installLocation será auto, de esta manera el usuario podrá mover la aplicación. Si este valor no es definido, el comportamiento general de la aplicación es de no dejar que el usuario mueva la aplicación a la memoria SDK. Los otros posibles valores son por ejemplo "internalOnly" que es el mismo comportamiento de la app sin el valor auto y "preferExternal", que instalará la aplicación en la tarjeta SD siempre y cuando esté disponible.

Finalmente intenta compilar tu aplicación usando cordova run android. La característica debería estar ahora activada y el usuario podrá mover la app del dispositivo a la tarjeta SD.

Move to sd enabled cordova

Información

Recuerda que desde la introducción de Android 6.0 Marshmallow, esta característica fue aparentemente removida, así que no te preocupes si estás usando un dispositivo Galaxy y ves que no encuentras la opción de mover a SD.

Por otro lado la versión minima del compilador debe ser de API Nivel 8 (Android 2.2), de otra manera tendrás errores como : error: No resource identifier found for attribute 'installLocation' in package 'android’.

En otros dispositivos, los usuarios podrán mover la aplicación a la memoria SD.

Que te diviertas !

Esto podría ser de tu interes

Conviertete en un programador más sociable