¿Hay alguna manera de obligar a las aplicaciones a usar solo la memoria interna?

Tengo un Sony Xperia U y mis 8 GB de memoria se dividen en tres partes: 2 GB de memoria del teléfono, 4 GB de memoria interna (reemplazando la ranura MicroSD) y 2 GB que realmente no he descubierto.

No quiero meterme con el reparto. Solo quiero usar cada uno como deben ser usados.

El problema es que muchas aplicaciones están optimizadas para guardar muchas cosas en SD, pero para este teléfono no es realmente útil, ¡ya que tiene mucho espacio en la memoria del teléfono! ¿Qué puedo hacer para que los datos de la aplicación creada automáticamente usen solo la memoria interna , dejando SD (interna, en el caso de Xperia U) libre para mi propio uso?

Editar: ¡Gracias por sus respuestas! John, mi dispositivo está rooteado, entonces, ¿podrías explicar más sobre esos permisos, por favor? ¡Gracias por adelantado!

(Tu inglés está bien. Mejor, incluso, que algunos hablantes nativos).
Si tuviera un dispositivo rooteado, podría configurar los permisos de la carpeta dentro de la tarjeta SD para solo rootear.
Si el desarrollador codificó eso en su aplicación, no hay mucho que puedas hacer. Si codificó la "ruta" (por ejemplo /sdcard/funnyapp, o usando getExternalStorageDirectory()(que es como debe hacerse) y agrega /funnyapp(o cualquier directorio), podría jugar con enlaces simbólicos (vinculando esa ubicación al almacenamiento interno), pero incluso eso lo más probable es que falle, ya que los enlaces simbólicos "no serán compatibles" con el sistema de archivos de la "tarjeta sd".
Además del comentario anterior de Izzy, no tendrá suerte si el desarrollador desea explícitamente que la aplicación se instale en algún lugar. Puede encontrar más información sobre esto en los documentos de soporte de Android . @Izzy, tu comentario es la respuesta a esta pregunta, ¿no es así?

Respuestas (3)

dice que su teléfono está rooteado, entonces es posible cambiar la ubicación de instalación predeterminada que usa el administrador de paquetes para instalar aplicaciones. esto solo funcionará con aplicaciones que lo permitan, como ya han señalado otros, las aplicaciones pueden optar por ignorar la recomendación de los administradores de paquetes e instalarse en interno/externo de todos modos, incluso si elige lo contrario. además, los archivos de caza mayor en el directorio obb se almacenan donde realmente se encuentra el directorio obb; esto depende del teléfono que uses.

para cambiar el directorio de instalación predeterminado:

1) use el emulador de terminal de google play (o, alternativamente, habilite la depuración de usb y use adb)

2) en el emulador de terminal, ingrese:

su

acepte la solicitud de superusuario, luego intente:

pm setInstallLocation X

o:

pm set-install-location X

donde X puede ser

0 = dejar que packagamanager decida

1 = instalar en interno por defecto

2 = instalar en externo por defecto

Como alentó Sid , convertiré mi comentario en una respuesta, mientras fusiono los detalles de los otros comentarios:

Hay principalmente dos formas en que se direcciona la tarjeta SDCard desde dentro de las aplicaciones:

  1. ruta codificada (por ejemplo /sdcard/funnyapp)
  2. usando la API de Android, es decirgetExternalStorageDirectory()

Mientras que 1. podría fallar si la tarjeta SDC se monta en un lugar diferente, 2. haría que la aplicación almacenara cosas en la "primera" tarjeta SDC (en dispositivos con tarjeta SDC interna, eso significa tarjeta SDC interna, en otros externos). Pero ambos casos comparten el hecho: si la aplicación no ofrece una opción de configuración, no hay nada que puedas hacer para cambiar eso. Android no ofrece una configuración correspondiente y los enlaces simbólicos no funcionan en las tarjetas SD (debido a las limitaciones del sistema de archivos).

Lo mismo se aplica al almacenamiento utilizado para la aplicación en sí, como escribió Sid señalando los documentos de soporte de Android (consulte también la documentación de los desarrolladores en la ubicación de instalación de la aplicación para esto). Si bien en la mayoría de los casos se puede mover una aplicación usando la función App2SD integrada en Android, el desarrollador puede anular esto para que su aplicación no se pueda mover.

En cuanto al comentario de John , esto realmente no funcionaría. Todavía una pequeña explicación sobre lo que probablemente quiso decir: al usar "poderes de raíz", puede cambiar la propiedad de todos los archivos y directorios. Entonces, su idea probablemente fue hacer que todas las cosas en su tarjeta SD fueran propiedad de root, y solo legible para otros. Esto no funcionaría por varias razones:

  • Esto haría las cosas aún más complicadas para ti (ya que no podrías escribir sin convertirte en root antes, cada vez).
  • No podría hacer eso a nivel de directorio (por ejemplo, hacerlo para cada directorio, excepto uno con un "nombre de fantasía" como, por ejemplo, "MyOwnDocs", donde podría almacenar sus cosas sin el problema del argumento anterior), ya que el sistema de archivos en la tarjeta (FAT) no es compatible con eso.
  • De alguna manera podría si usa un script para volver a montar la tarjeta de lectura y escritura cada vez que desee escribir en ella, y hacer que sea de solo lectura nuevamente una vez que haya terminado. Pero, de nuevo, esta complicación probablemente no valga la pena. Además, algunas aplicaciones pueden fallar con una tarjeta SDC de solo lectura, ya que (por buenas razones) no esperan una tarjeta SDC presente pero no escribible.

TL;RD

En resumen: si las aplicaciones no se pueden configurar por sí mismas, no hay forma de lograrlo (excepto reescribiendo esas aplicaciones).

los enlaces simbólicos no funcionan en fat pero puede montar una carpeta como: mount -o bind /internal/dir /sdcard/dir

Intente usar Lucky Patcher e instale la aplicación de la aplicación como una aplicación del sistema.

¿Podrías vincular a Lucky Patcher? ¿Esto realmente cambiará el lugar donde la aplicación guarda las cosas?