Como permitir mover a la SD Card una aplicacion

En este post vamos a aprender cómo permitir que nuestra aplicación sea movida a la SD Card por un usuario a través del Administrador de Aplicaciones nativo del móvil/tableta.

Objetivos:

Permitir que un usuario de nuestra aplicación que pueda moverla a la SD Card.

Requisitos necesarios:

  • Nuestra aplicación debe tener un build target mínimo de 8 (versión 2.2), ya que antes no está especificada la instrucción que añadiremos, y encontraremos el error:
    No resource identifier found for attribute ‘installLocation’ in package ‘android’

  • Hay que tener en cuenta que los usuarios con una versión de Android anterior a la 2.2 no pueden mover las aplicaciones a la SD C ard a través de la configuración nativa del móvil (podrán si la aplicación tiene dicha opción o si descargan una aplicación que lo realice).

Pasos:

  1. Cambiar el build target a una versión 8, como mínimo:
    En Eclipse -> Boton derecho sobre el proyecto -> Propierties -> Android -> Seleccionamos el build target de 8 o más alto.

  2. Indicar a la aplicación que el usuario podrá elegir moverla a la SD Card:Para ello editamos el fichero AndroidManifest.xml, añadiendo android:installLocation=”auto” dentro la etiqueta <manifest>.
    Ejemplo:
    <manifest xmlns:android=”http://schemas.android.com/apk/res/android package=”com.ejemplo.holaMundo:versionCode=”3″ android:versionName=”1.2″ android:installLocation=”auto”>

  3. Para probarlo, una vez instalada la aplicación (en nuestro móvil físico), podemos ir a Menú -> Ajustes -> Aplicaciones -> Administrar Aplicaciones -> Hacemos clic sobre nuestra aplicación -> Vemos que la opción Mover to SD Card está ya activada.
    Se recuerda que esta opción está en las versiones 2.2 de Android en adelante.

    Memoria del teléfono a la SD Card

 

Nota: si lo deseamos, podríamos obligar a que instale desde primera hora la aplicación en la SD Card o en la memoria del teléfono, podemos poner el valor de android:installLocation=”preferExternal”android:installLocation=”internalOnly”, respectivamente.