8 votos

¿Por qué las aplicaciones pueden acceder a toda la tarjeta SD?

¿Existe alguna razón técnica para que las aplicaciones que sólo necesitan sus propios datos no se limiten a una carpeta? Soy consciente de que algunas aplicaciones utilizan los datos de otras aplicaciones, pero sería mucho más probable que instalara una aplicación que sólo pidiera permiso para almacenar archivos en una carpeta específica.

6voto

Matthew Read Puntos 35808

Las tarjetas SD suelen utilizar el sistema de archivos FAT, que no permite la concesión de permisos al sistema de archivos. Esto significa que el sistema operativo Android tendría que gestionar una lista personalizada de archivos, sus permisos, una asignación de aplicaciones a archivos/carpetas, etc. para evitar que las aplicaciones accedan a toda la tarjeta. Esto sería un lío terrible. No sólo es complicado, sino que requeriría mucho espacio de almacenamiento. Y luego un día sacas la tarjeta SD y sacas algunas fotos, y todo el sistema se rompe. Ya te haces una idea.

4 votos

No veo cómo el acceso al sistema de archivos de una aplicación sea un lío, y sobre todo cómo la eliminación de algunas imágenes lo rompería.

0 votos

Bueno, eliminar archivos no necesariamente lo rompería, si la gestión fuera lo suficientemente compleja. Pero añadir archivos sería un problema. Permitir que cualquier aplicación acceda a los nuevos archivos es un problema, y no permitir ninguno hace que los archivos sean inútiles. Podrías tener una carpeta específica de Dropbox, lo que de nuevo hace la gestión más compleja. Pero, ¿cómo se puede obligar a alguien que mueve los archivos en la tarjeta desde su PC a utilizar la carpeta de Dropbox? No se puede. De nuevo se podría hacer la gestión más compleja, y hacer que se mueva cualquier archivo nuevo al dropbox. Pero siempre habrá otra forma de romperlo.

5 votos

Los medios extraíbles están diseñados para ser eliminados y alterados por otros dispositivos, por lo que los intentos de gestionarlos son básicamente inútiles. ¿Esperarías que Windows/Linux/MacOS impidiera el acceso de aplicaciones individuales a una tarjeta SD conectada a tu teléfono? ¿Querrías configurar cuál de tus 100 aplicaciones puede acceder a qué partes de la tarjeta? Es mucho más fácil no poner cosas importantes en la tarjeta SD si vas a instalar aplicaciones aleatorias que no son de confianza. Ya está hecho :P

1voto

jmbouffard Puntos 1451

Existen diferentes mecanismos para almacenar datos en una aplicación Android que no necesitan el permiso de acceso a la tarjeta SD. Se pueden crear bases de datos, almacenar parámetros de la aplicación, crear archivos en el almacenamiento interno. Todo esto no requerirá ningún permiso específico y estos datos son accesibles sólo por la aplicación que los creó.

Por otro lado, si una aplicación necesita el permiso de la tarjeta SD puede ser porque tiene una gran cantidad de datos que almacenar o que quiere modificar/añadir/eliminar archivos como en un gestor de archivos. Pero para datos importantes específicos de la aplicación, la tarjeta SD no es recomendable porque podría ser eliminada en cualquier momento (o montada como una unidad USB) y no estar disponible para las aplicaciones.

Creo que muchas aplicaciones que piden permiso de acceso a la SD podrían utilizar otro tipo de almacenamiento de datos que no lo requiera. Además, los archivos creados en la SD por una aplicación no se eliminarán al desinstalar la aplicación, pero sí todos los demás tipos de almacenamiento de datos internos. Así que para mí sería una mejor práctica de desarrollo no utilizar la SD si no es necesario, y como has mencionado no ahuyentaría a la gente como las aplicaciones que acceden a toda la SD.

0voto

Andy Brudtkuhl Puntos 1714

Como ha explicado Matthew Read, con una tarjeta SD normal que utiliza el sistema de archivos FAT, no es posible utilizar los permisos de archivo para controlar el acceso de las aplicaciones, de la misma manera que Android controla su acceso a los archivos en el sistema de archivos interno. Pero ahora que los teléfonos Android utilizan el almacenamiento interno en lugar de las tarjetas SD, y utilizan MTP para ofrecer acceso a través de USB en lugar de la clase de dispositivo de almacenamiento masivo, los teléfonos Android son libres de utilizar mejores sistemas de archivos para su almacenamiento de datos de gran tamaño.

KitKat ha añadido un nuevo mecanismo para que las aplicaciones almacenen archivos de gran tamaño. En el almacenamiento interno USB, cada aplicación obtiene un directorio de datos privado, al igual que en la memoria más pequeña del dispositivo. Las aplicaciones pueden acceder a su directorio privado en este sistema de archivos sin necesidad de permisos especiales. Ahora también es posible que las aplicaciones sólo pidan el permiso de "lectura de la tarjeta SD" y "escritura en la tarjeta SD" en las versiones de Android anteriores a KitKat, si sólo necesitan la tarjeta SD para utilizar un directorio privado como éste.

Los antiguos directorios compartidos como "Descargas", "Música" y "Notificaciones" siguen estando presentes como antes, y siguen necesitando los mismos permisos para acceder a ellos. Las aplicaciones antiguas que no han sido actualizadas para KitKat seguirán utilizando esos directorios, no los nuevos directorios privados.

PreguntAndroid.com

PreguntAndroid es una comunidad de usuarios de Android en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X