una solicitud quitar puedo permisos permiso obstaculizando necesario los inhabilitaste habilitar esta dar contactos como app aplicaciones administrador activar android sd-card android-permissions android-external-storage android-6.0-marshmallow

solicitud - no puedo dar permisos a aplicaciones android



¿Cómo cambia el acceso al almacenamiento en Android 6? (2)

Para responder a su pregunta 5: en Android 7, todos los archivos en el área de "datos públicos", /storage/emulated/0/ (o una ubicación específica del fabricante; es el directorio que contiene las Downloads DCIM , etc.), se almacenan completamente En la memoria interna o completamente en la tarjeta SD adoptada. Después del formato inicial de una tarjeta SD adoptada, al usuario se le presentará la oportunidad de "Migrar datos", que moverá todo /storage/emulated/0 a la tarjeta SD. En cualquier momento, el usuario también puede ir a Configuración / Almacenamiento , seleccionar el área de almacenamiento que no tiene actualmente el área de datos públicos, y hacer clic en el (tres puntos verticales) en la parte superior derecha para abrir un menú con el Opción "migrar datos".

Parece que no hay forma de que un usuario o una aplicación fuerce un archivo público en particular a la tarjeta SD si una tarjeta adoptada está en uso; es todo o nada. (El almacenamiento privado de la aplicación estará en el almacenamiento interno o en la tarjeta SD según si la aplicación se ha movido o no a la tarjeta SD; también parece que la aplicación solo utilizará una u otra, no ambas). .)

Fondo

Android tuvo muchos cambios en cuanto a cómo manejar la tarjeta SD y el almacenamiento en general:

  • API 3: obtienes todo el acceso, no se necesita permiso
  • API 4-15: debe utilizar WRITE_EXTERNAL_STORAGE y obtiene todo el acceso.
  • API 16-18: si solo desea leer, use READ_EXTERNAL_STORAGE
  • API 19-20: no puede leer ni escribir en el almacenamiento externo secundario (tarjeta SD), a menos que su aplicación sea una aplicación del sistema o tenga una raíz.
  • API 21-22: para acceder a la tarjeta SD, debe pedir permiso al usuario y usar la API DocumentFile en lugar de la API de archivos. Esto generó muchas preguntas, como he escrito here , here y here .

A partir de la API 23 (Android 6), las cosas parecen cambiar una vez más ...

El problema

Para API 23, hay al menos 2 cosas nuevas y relacionadas con el almacenamiento:

  • " Dispositivos de almacenamiento adoptables ": el usuario puede opcionalmente hacer la tarjeta SD como algo que se parece al almacenamiento externo primario.
  • Como parte del nuevo mecanismo de permisos (solicitar permisos en tiempo de ejecución), parece que el almacenamiento también es un permiso que el usuario necesita confirmar. Esto es tanto para READ_EXTERNAL_STORAGE como para WRITE_EXTERNAL_STORAGE.

Ya que no hay ningún dispositivo Android 6 que tenga tarjeta SD, y como el emulador en sí no tiene la capacidad de usar una tarjeta SD, aún es imposible saber qué está pasando.

Las preguntas

  1. ¿Obtendrá la tarjeta SD el acceso utilizando la API de archivos en lugar de DocumentFile?

  2. Si quiero acceder a todas las rutas de almacenamiento externo (incluida la tarjeta SD), ¿significa que debo solicitar estos permisos dos veces: uno para el almacenamiento externo principal y otro para la tarjeta SD?

  3. ¿Se puede acceder a los archivos de la tarjeta SD de alguna manera antes de la concesión manual de la autorización?

  4. Supongamos que el usuario ha elegido utilizar "Dispositivos de almacenamiento adoptables", ¿qué significa para las diversas funciones que recuperan las rutas de los archivos de la aplicación? Por ejemplo: getFilesDir, getExternalFilesDir, ...? ¿Cambiaría el orden de getExternalFilesDirs por eso?

  5. ¿Qué sucede con los archivos de la aplicación cuando el usuario mueve la aplicación de / a la tarjeta SD (utilizando los "Dispositivos de almacenamiento adoptables")? ¿Qué pasa con los archivos de la aplicación en la tarjeta SD? ¿Se quedarían? ¿O se mudarían a alguna parte?

    Por ejemplo, si la aplicación tiene "file1.txt" en la tarjeta SD, en ruta "/ storage / extSdCard / Android / data / appPackageName", y tiene un archivo "file2.txt" (o incluso el mismo nombre) en el almacenamiento externo primario en la ruta "/ storage / emulated / 0 / Android / data / appPackageName". Después de cambiar, ¿qué pasaría con esos archivos? ¿Cómo se fusionarían en una sola carpeta, en todo caso?

  6. Al mover la aplicación a la tarjeta SD (utilizando "Dispositivos de almacenamiento adoptables"), ¿significa que no se utilizará ningún almacenamiento interno?


Permítame responder a las preguntas relacionadas con Dispositivos de almacenamiento adoptables :

  1. Supongamos que el usuario ha elegido utilizar "Dispositivos de almacenamiento adoptables", ¿qué significa para las diversas funciones que recuperan las rutas de los archivos de la aplicación? Por ejemplo: getFilesDir, getExternalFilesDir, ...? ¿Cambiaría el orden de getExternalFilesDirs por eso?

Cuando el usuario elige usar la tarjeta SD como "Dispositivo de almacenamiento adoptable" (Formato como interno), significa que ahora la tarjeta SD está disponible solo como almacenamiento interno, es decir, no hay una tarjeta SD disponible para almacenar los archivos descargados. No habrá cambio de orden en las rutas devueltas por los métodos relacionados. Por ejemplo: getExternalFilesDir () mostrará solo una ruta de almacenamiento externo si el usuario formatea su tarjeta SD como "Dispositivos de almacenamiento adoptables". La ruta de la tarjeta SD no estará disponible.

  1. ¿Qué sucede con los archivos de la aplicación cuando el usuario mueve la aplicación de / a la tarjeta SD (utilizando los "Dispositivos de almacenamiento adoptables")? ¿Qué pasa con los archivos de la aplicación en la tarjeta SD? ¿Se quedarían? ¿O se mudarían a alguna parte? Por ejemplo, si la aplicación tiene "file1.txt" en la tarjeta SD, en la ruta "/ storage / extSdCard / Android / data / appPackageName", y tiene un archivo "file2.txt" (o incluso el mismo nombre) en el almacenamiento externo primario en la ruta "/ storage / emulated / 0 / Android / data / appPackageName". Después de cambiar, ¿qué pasaría con esos archivos? ¿Cómo se fusionarían en una sola carpeta, en todo caso?

Cuando un usuario elija su tarjeta SD como "Dispositivos de almacenamiento adoptables", el usuario deberá formatear su tarjeta SD como almacenamiento interno usando la opción "Formatear como interno" . Formato significa que todos los datos / archivos almacenados en la tarjeta SD serán borrados. De manera similar, cuando el usuario desea retirar su tarjeta SD de "Dispositivos de almacenamiento adoptables", el usuario nuevamente debe formatear su tarjeta SD como almacenamiento portátil utilizando la opción "Formatear como portátil" .

  1. Al mover la aplicación a la tarjeta SD (utilizando "Dispositivos de almacenamiento adoptables"), ¿significa que no se utilizará ningún almacenamiento interno?

Sí, no se utilizará el almacenamiento interno original. Solo se utilizará el almacenamiento en la tarjeta SD porque después de elegir la tarjeta SD como "Dispositivos de almacenamiento adoptables". Todos los datos / caché se almacenarán en la tarjeta SD