varios usar studio requestpermissions permisos pedir para onrequestpermissionsresult example camara administrador android permissions android-6.0-marshmallow

requestpermissions - permisos para usar camara android studio



¿Se requiere permiso de autorización para EXTERNAL_STORAGE en Android M? (6)

¿Los permisos de Android WRITE_EXTERNAL_STORAGE y READ_EXTERNAL_STORAGE activarán el nuevo diálogo de permiso de concesión de Android M?


De acuerdo con los documentos:

Permisos limitados concedidos en el momento de la instalación: cuando el usuario instala o actualiza la aplicación, el sistema concede a la aplicación todos los permisos que solicite la aplicación que estén bajo PROTECTION_NORMAL.

Entonces, debido a que READ_EXTERNAL_STORAGE cae bajo PROTECTION_NORMAL, no activará el diálogo.

Pero debido a que el nivel de WRITE_EXTERNAL_STORAGE es PROTECTION_DANGEROUS, caerá bajo este comportamiento como se describe en los documentos:

El usuario concede permisos en tiempo de ejecución: cuando la aplicación solicita un permiso, el sistema muestra un diálogo al usuario y luego llama a la función de devolución de llamada de la aplicación para notificarle si se otorgó el permiso. Si un usuario otorga un permiso, la aplicación recibe todos los permisos en el área funcional de ese permiso que se declararon en el manifiesto de la aplicación

Aquí están las fuentes para el nivel de protección:

lista detallada


Mi respuesta se basa en mis pruebas en M Preview SDK versión 2, usando un emulador.

Si orienta el nivel de API de vista previa de MNC , WRITE_EXTERNAL_STORAGE no se concede por defecto y formará parte de la nueva API de permisos dinámicos.

Verá el permiso de almacenamiento como un botón de alternar en el nuevo menú de permisos de la aplicación en la configuración del dispositivo, y puede usar Activity.requestPermissions para mostrar la ventana emergente para ese permiso.

Sin embargo, si apuntas a nivel api <MNC, no se clasificará como un permiso peligroso y, por lo tanto, se otorgará sin una forma para que el usuario lo desactive (no se muestre en la configuración de permisos), y no podrás compila código usando Activity.requestPermissions todos modos, ya que el SDK de vista previa impone minSdkVersion="MNC" para usar las nuevas API.

Este es un comportamiento diferente al de los permisos de ubicación: sea cual sea el nivel de API al que se dirija, el usuario podrá desactivar la ubicación en el menú de permisos.

Para el menú de permisos en sí, el estado de activación de permiso está activado por defecto si:

  • Nivel de API objetivo <MNC.
  • Target API level = MNC pero actualizas la aplicación en el dispositivo desde una instalación anterior donde el nivel de la API objetivo era menor que MNC.

De lo contrario, verá el alternar como DESACTIVADO por defecto.

Espero eso ayude.


De acuerdo con los documentos de Android , no necesita solicitar permiso para leer y escribir en el almacenamiento externo.

Editar: en la última versión de Android M necesita pedir permisos de lectura y escritura


El permiso de almacenamiento cae bajo un nivel de protección peligroso, por lo que no se otorgarán todos los permisos de nivel de protección peligrosos en el momento de la instalación en Android M, si el SDK de destino de la aplicación está configurado en 23. Se administrarán en tiempo de ejecución. Y sí, estos permisos también pueden revocarse en tiempo de ejecución.

Ningún diálogo de permiso no se activará automáticamente, debe realizar una solicitud utilizando API, como el método requestPermissions (), para mostrar ese diálogo nativo.

Por favor revisa la lista de permisos de niveles peligrosos aquí


Estoy de acuerdo con la respuesta de Guillaume Perrot. He encontrado una pregunta similar cuando escribo el permiso de READ_WRITE_EXTERNAL_STORAGE en AndroidManifest.xml

sin permisos que aparecen en la aplicación de manera predeterminada, las personas necesitan cambiar el botón de alternar del almacenamiento en los permisos de la aplicación. targetSdkVersion mi targetSdkVersion en build.gradle a menos de 23(MNC) y otro número relacionado con sdkVersion , la aplicación instalado con los permisos activados

La otra forma es escribir la función de requestpermission en el lugar donde necesita el permiso. El código es el siguiente:

if (checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)== PackageManager.PERMISSION_GRANTED) { //do the things} else { requestPermissions(new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE }, AnyNumber);

Porque tengo menos de 15 de reputación, así que no puedo votar por la respuesta de Guillaume Perrot. Solo use esta forma para mostrar mi idea.


Resolví agregar esto si la versión de verificación para Android M

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { requestPermissions(new String[]{android.Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); requestPermissions(new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, 1); }