Hay algunos factores que pueden afectar esto:
Una aplicación debe declarar explícitamente que es preferible / posible instalarla en la tarjeta SD.
A partir del nivel 8 de API, puede permitir que su aplicación se instale en el almacenamiento externo (por ejemplo, la tarjeta SD del dispositivo). Esta es una característica opcional que puede declarar para su aplicación con el android:installLocation
atributo manifiesto. Si no declara este atributo, su aplicación se instalará solo en el almacenamiento interno y no se puede mover al almacenamiento externo .
(El énfasis es mío)
Una aplicación está configurada para compilarse utilizando API 7 (Froyo) o inferior, que no admite la instalación de una aplicación en la tarjeta SD (incluso si está instalada en GingerBread o dispositivos más nuevos)
La posibilidad de que su aplicación se instale en el almacenamiento externo es una característica disponible solo en dispositivos que ejecutan API Level 8 (Android 2.2) o superior. Las aplicaciones existentes que se crearon antes del nivel 8 de API siempre se instalarán en el almacenamiento interno y no se pueden mover al almacenamiento externo (incluso en dispositivos con nivel 8 de API) . Sin embargo, si su aplicación está diseñada para admitir un nivel API inferior a 8, puede optar por admitir esta función para dispositivos con nivel API 8 o superior y seguir siendo compatible con dispositivos que utilizan un nivel API inferior a 8.
(El énfasis es mío)
Las razones por las que no es preferible instalar algunas aplicaciones en la tarjeta SD son las siguientes:
Cuando el usuario habilita el almacenamiento masivo USB para compartir archivos con su computadora (o de lo contrario desmonta o elimina el almacenamiento externo), cualquier aplicación instalada en el almacenamiento externo y actualmente en ejecución se anula. El sistema no tiene conocimiento de la aplicación hasta que se deshabilita el almacenamiento masivo y el almacenamiento externo se vuelve a montar en el dispositivo. Además de eliminar la aplicación y hacer que no esté disponible para el usuario, esto puede romper algunos tipos de aplicaciones de una manera más seria. Para que su aplicación se comporte consistentemente como se esperaba, no debe permitir que su aplicación se instale en el almacenamiento externo si utiliza alguna de las siguientes características, debido a las consecuencias citadas cuando el almacenamiento externo se desmonta:
Servicios
Su ejecución Service
se anulará y no se reiniciará cuando se vuelva a montar el almacenamiento externo. [...]
Servicios de alarma
Sus alarmas registradas con AlarmManager
serán canceladas. [...]
Método de entrada Motores
Su IME será reemplazado por el IME predeterminado. [...]
Fondos de pantalla vivos
Su Live Wallpaper en ejecución será reemplazado por el Live Wallpaper predeterminado. [...]
Widgets de aplicaciones
Su aplicación Widget se eliminará de la pantalla de inicio. Cuando se vuelve a montar el almacenamiento externo, el widget de la aplicación no estará disponible para que el usuario seleccione hasta que el sistema restablezca la aplicación de inicio (generalmente no hasta que se reinicie el sistema).
Gerente de Cuentas
Sus cuentas creadas con AccountManager
desaparecerán hasta que se vuelva a montar el almacenamiento externo.
Adaptadores de sincronización
Tu AbstractThreadedSyncAdapter
y todas sus funciones de sincronización no funcionarán hasta que se vuelva a montar el almacenamiento externo.
Administradores del dispositivo
Usted DeviceAdminReceiver
y todas sus capacidades de administración se desactivarán, lo que puede tener consecuencias imprevisibles para la funcionalidad del dispositivo, que puede persistir después de que se vuelva a montar el almacenamiento externo.
Los receptores de difusión escuchan "arranque completado"
El sistema entrega la ACTION_BOOT_COMPLETED
transmisión antes de que el almacenamiento externo se monte en el dispositivo. Si su aplicación está instalada en el almacenamiento externo, nunca podrá recibir esta transmisión.
Si su aplicación utiliza alguna de las características enumeradas anteriormente, no debe permitir que su aplicación se instale en almacenamiento externo.
(Algunas partes están redactadas. Explican lo que los desarrolladores deben hacer para que sus aplicaciones funcionen correctamente después de volver a montar la tarjeta SD).
Nota : esta respuesta sirve como información general para "Por qué algunas aplicaciones no se pueden mover a la tarjeta SD"
Fuente: Desarrolladores de Android: ubicación de instalación de la aplicación .