¿Se pueden obtener permisos de directorio en Android?

En cualquier dispositivo Android, el 99,5% de las aplicaciones quieren el permiso "Escribir/Leer contenido de la tarjeta SD" en combinación con "Acceso total a la red".

En teoría, estos 2 permisos son suficientes para que la aplicación lea todos mis archivos personales (almacenamiento en la nube) y los envíe a su servidor. ¿Hay alguna manera de permitir que solo las aplicaciones accedan a sus carpetas?

¿Por qué todas las aplicaciones tienen acceso a todas las carpetas? ¿Por qué no se implementa un concepto tan básico?

Necesitaría un administrador de permisos. Mire a su alrededor en este sitio. Tu pregunta ya está respondida. (Sugerencia: aplicaciones como XPrivacy, Privacy Guard y más).

Respuestas (2)

Los permisos de nivel de carpeta no son una buena opción para la tarjeta SD (ya sea emulada o externa). Hace las cosas más complicadas.

De forma predeterminada, las tarjetas sd se montan en noexec, no se pueden ejecutar archivos binarios desde la tarjeta sd. No hace falta mencionar que muchas tarjetas SD externas en este momento están formateadas con fat32, los permisos no son una opción para ellas.

Cada aplicación tiene su propio uid/gid. Si una aplicación debe tener permisos exclusivos de lectura/escritura (que impiden que otras aplicaciones lean ese contenido) en una carpeta en la tarjeta SD, es probable que otras aplicaciones no puedan acceder a la carpeta. Este tipo de situación rompe cosas.

Por ejemplo, los archivos de música se encuentran en la carpeta Música en la tarjeta SD. Si esa carpeta tiene permisos exclusivos solo para una aplicación de música en particular, entonces U no puede tener varios reproductores de música en su dispositivo.

Otro ejemplo es que un administrador de archivos de terceros ni siquiera puede acceder a todo el contenido de la tarjeta SD, lo que hace que el administrador de archivos no tenga sentido.

Si ese concepto está disponible, lo más probable es que Android/Google imponga la clasificación de archivos/carpetas en nuestras tarjetas SD. Yo no preferiría eso. Preferiría tener los archivos/carpetas ordenados de la manera que prefiero, no de la forma en que alguien me obliga a hacerlo.

Bharat G, hola, noexec se puede anular en un dispositivo rooteado ejecutando el binario como su desde la tarjeta sd de la misma manera que un script ./binary

¿Por qué todas las aplicaciones tienen acceso a todas las carpetas?

Eso es porque ese es el propósito explícito del almacenamiento externo, compartir datos entre aplicaciones que no necesariamente han sido diseñadas para funcionar juntas.

Si una aplicación que usa almacena datos privados en un almacenamiento externo, deje de usar esa aplicación. Tanto los desarrolladores de aplicaciones como los usuarios a menudo tienen la idea errónea de que el almacenamiento externo es para almacenar archivos grandes. Ese pensamiento es erróneo y peligroso. Si los datos no están destinados a ser compartidos, deben almacenarse en el almacenamiento interno, sin importar cuán grandes sean. Otro concepto erróneo peligroso es equiparar el almacenamiento externo con la tarjeta SD.

¿Por qué no se implementa un concepto tan básico?

Esa es una suposición incorrecta. A partir de Android 4.4, las aplicaciones pueden acceder a un directorio específico de la aplicación en el almacenamiento externo sin tener el permiso amplio READ_EXTERNAL_STORAGE/WRITE_EXTERNAL_STORAGE. A partir de Android 4.4, esos permisos solo son necesarios si una aplicación quiere usar datos compartidos por otra aplicación a través del almacenamiento externo.