Cómo dar permisos a aplicaciones en Android Studio

37
3665
tutoriales android studio

¿Quieres dar permisos a aplicaciones en Android Studio? Si quieres hacer tu aplicación para Marshmallow, deberás gestionar los permisos que tu aplicación necesita en el Manifest. Por ejemplo, si estás programando una aplicación que al hacer clic en una imagen se le guarde en la galería al usuario, necesitarás gestionar los permisos de almacenamiento, o por el contrario, Marshmallow no te permitirá hacer esto por las buenas (sí en versiones anteriores). En este tutorial, vemos cómo agregar permisos en Android Studio con un ejemplo:

Añade permisos a aplicaciones en Android Studio

Imagina la siguiente situación: tu aplicación tiene un conjunto de imágenes, y el objetivo es que se guarden en la galería del usuario con solo hacer clic en ellas. Esto funciona en todas las versiones de Android menos con una, ya que si ese usuario tiene Android 6.0 Marshmallow, deberás gestionar los permisos o de lo contrario le dará error al intentar guardar la foto, porque Marshmallow no te lo va a permitir así sin más.

Lo primero que tendrás que hacer para dar permisos a tu app, es añadir la siguiente línea de código a tu Manifest.xml:

Por supuesto, esto es un ejemplo para escribir en el almacenamiento externo (del ejemplo de guardar una imagen en la galería). Si queremos que haga cualquier otra cosa, tendremos que indicárselo de la misma manera. Puedes ver más info sobre los permisos aquí, por parte de Android Developers. Tendrás que buscar el permiso que necesitas, y añadirlo. Como ya te digo, esto solo será necesario para los usuarios que ejecuten la app y tengan Marshmallow.

Lo siguiente que haremos, es añadir los siguientes trozos de código, y ahora desde nuestra actividad principal:

Desde fuera del onCreate(), el siguiente, con @Override:

También deberemos añadir esta constante (podremos ponerle el nombre que queramos):

Esto nos funciona para los permisos de almacenamiento, pero podremos hacerlo para cualquier permiso que queramos que nuestra aplicación solicite. Si tienes dudas, puedes preguntarnos en los comentarios.

Solicitar los permisos es fundamental para los móviles que tengan Marshmallow, porque sino, no podrán hacer uso de funcionalidades que solicite nuestra aplicación (ej. abre la cámara, guarda fotos en la galería…). Dar permisos a aplicaciones en Android Studio es fundamental, para que los usuarios puedan usar la aplicación correctamente.

Resultado

Tras haber añadido los anteriores trozos de código tanto en Manifest como en el Activity, en cuanto abrimos la app, vemos que efectivamente nos solicita los permisos de la siguiente manera (si el usuario no tiene Marshmallow, no le va a aparecer como ya te contamos):

Dar permisos a aplicaciones en Android Studio

Si se los otorgamos, la aplicación podrá escribir en nuestro almacenamiento, es decir, guardar imágenes en la galería, en nuestro ejemplo. Como ves, es un procedimiento muy sencillo y rápido. Prácticamente todo el código lo da Google a través de Android Developers.

¿Ya sabes cómo dar permisos a aplicaciones en Android Studio? Déjanos un comentario si tienes dudas. Esperamos que te haya sido útil el tutorial y hayas conseguido dar permisos a tus aplicaciones en Android Studio. 

Todos los permisos en Android Developers

Importante: Lista de permisos

Ejemplo: Permisos de almacenamiento + cámara

Manifest:

Clase principal:

Fuera de onCreate()

¡Espero que te haya servido!

37 Comentarios

  1. hola tengo una aplicacion hecha en android estudio y necesito saber como puedo dar mas permisos a mi app. es una app para enviar sms de texto. me urge podrias ayudarme

  2. Hola,
    quería saber como puedo grabar una imagen desde la app a la galería del teléfono o a la carpeta de descargas.
    He buscado un montón de ejemplos pero no me funciona ninguno.
    Gracias.

    • Hola amigo. La verdad es que el procedimiento es un poco tedioso al menos la primera vez que se hace. Vas a necesitar una clase externa para guardar (save) y luego llamarla desde tu clase principal, sería algo así

      imagen.buildDrawingCache();
      Bitmap bmap = imagen.getDrawingCache();

      Save savefile = new Save();
      savefile.SaveImage(context, bmap);
      }
      });

      Pronto te traeremos el tutorial 🙂

  3. Hola como puedo hacer para que pida permiso pero de 2 permisos, en mi caso necesito permiso de la SDCARD como el ejemplo y tambien el de CAMERA.

    Como hago para que al abrir la aplicacion me pregunte por ambos permisos :’v.

    Me ayudas?, muchas gracias.

    • Hola Isaac! Para que te pregunte por los permisos tienes que usar Marshmallow. ¿Hiciste la llamada a los permisos en Manifest.xml?

      Esto iría en el manifest:

      android.permission.WRITE_EXTERNAL_STORAGE

      android.permission.CAMERA

      Si incluiste estas 2 líneas tendría que preguntarte por los permisos al cargar la app (lo hace la primera vez), luego puedes comprobar desde Aplicaciones > tu app > Permisos si están marcados.

      Luego es simplemente copiar y pegar en la clase principal todo el código que aportamos en el artículo, y sustituir por estos permisos. Para el caso de la memoria externa ya lo tienes, solo necesitarías hacer lo mismo para la cámara.

      Espero haberte ayudado, sino escríbeme de vuelta y seguimos!

      • Hola, por supuesto ya agregue en el manifest los dos permisos, pero quisiera que por favor me lo adaptes el codigo que pusiste en el articulo para que pida los dos permisos. He intentado hacerlo yo…. pero no me ha funcionado solo me pide un permiso y no el otro.

        Podrías adaptarlo para mi ? por favor, gracias!.

        Y por supuesto uso Android 6 en mi Note II, muchas gracias Andrea.

  4. Hola, por supuesto ya agregue en el manifest los dos permisos, pero quisiera que por favor me lo adaptes el codigo que pusiste en el articulo para que pida los dos permisos. He intentado hacerlo yo…. pero no me ha funcionado solo me pide un permiso y no el otro.

    Podrías adaptarlo para mi ? por favor, gracias!.

    Y por supuesto uso Android 6 en mi Note II, muchas gracias Andrea.

    • Hola! Perdona por tardar pero intenté dejarte el código en un comentario y no funcionó, tuve que eliminarlo. Te lo puse en el artículo, al final de todo! Espero que te sirva. Comprueba entrando en aplicaciones > tu apk > permisos que estén los dos permisos, a mí así me aparecen! Si no te sigue funcionando, vemos qué hacer!

      Un saludo amigo!

    • Desde tu aplicación, puedes probar con el siguiente código si quieres para que el usuario pueda ver directamente los permisos y demás de la app, sin tener que salir de ella!
      Intent intent = new Intent();
      intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
      Uri uri = Uri.fromParts(“package”, this.getPackageName(), null);
      intent.setData(uri);
      this.startActivity(intent);

  5. Hola tengo un par de dudas,
    MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE tiene valor de 1 supongo que ese 1 es por que con eso se da el permiso, que valor tiene MY_PERMISSIONS_REQUEST_CAMERA ?
    y cuando utilizas los persmissionscheck?

    • Hola Raúl! Puedes darle el valor 2 mismamente. PermissionCheck finalmente no se usa, solo lo use al principio para hacer una comprobación de que estaba funcionando. ¿Has conseguido añadir los permisos a tu app?

  6. JAJAJA si ya tengo los permisos, otra duda como puedo hacer que con un switch en mi app pueda activar y desactivar el GPS del celular??

  7. Hola, soy nuevo en android studio, no se si tengas experiencia usando bluetooth low energy, el caso es que estoy usando el ejemplo que viene con el software del “heart rate”, a este codigo le puse los permisos como viene en tu post y funciono, me detecto mi dispositivo y el servicio, pero el problema es que no recibe los datos la aplicación o sea la aplicacion que hice no recibe los pulsos del corazón, ¿tendrás alguna idea de porque pasa esto?alguna sugerencia?………estoy usando un Blend micro de arduino con BLE 4.0, aquí yo hice el codigo para crear el servicio, se que funciona por que ya lo probe con muchas otras aplicaciones que descarge, pero ahora quiero crear mi propia aplicacion.

  8. Tengo una app webview de mi sitio la cual no me deja subir una foto a la web por medio del file choosen. Pero desde un explorador web funciona perfecto… Es por algun permiso? Saludos

  9. Hola, tengo un problema al tratar de obtener los permisos para poder obtener la ubicacion del gps y mostrar mi ubicacion en un mapa, me marca error a la hora de compilar, estoy usando la version actual de android studio, no soy muy conocerdor del tema, me gustaria si me dejaras una guia o un tutorial para hacer que funcione(o tal vez me falte un paquete o algo), si me dejas un codigo me alegraria mucho c: jeje. Saludos

  10. Hola, espero que estés bien, mira, tengo un problema con los servicios en android, hice una aplicación que utiliza un servicio que exporta e importa información de SQLite a SQL SERVER y viceversa, en versiones de android 5.1 y 5.0 me funciona de maravilla, pero en android 6.0 al instalar la App el servicio dejo de funcionar, te comento que el servicio lo tengo con los permisos de RECEIVE_BOOT_COMPLETED para que se ejecute al terminar de iniciar el sistema y siempre este trabajando, si el servicio lo ejecuto desde una actividad de mi App se inicia bien y trabaja como debería pero no puedo hacer que se ejecute de forma automática sin que este la App activa, espero puedas ayudarme, gracias y Saludos…

  11. me da un error, y la verdad estoy metiendome en android, mi objetivo es administrar los permisos para leer coordenadas de gps, y en todas las pruebas que hago de codigos diferentes siempre me topo con el error de compilador cannot resolve symbol, en este caso sobre la propiedad MY_PERMISSIONS_REQUEST_WRITE_EXTERNAL_STORAGE.
    tambien he de puntializar que Manifest.permission.WRITE_EXTERNAL_STORAGE deberia cambiarse por android.Manifest.permission.WRITE_EXTERNAL_STORAGE. no obstante no se de donde proviene ese error que puntialice antes, es probable que falte un import (cuestion misteriosa que en el 90% de los tutoriales sobre android no se especifican qué imports hay que incluir), o que exista un error en el manifest. bueno si alguien tiene una idea sera bienvenida, por lo pronto seguire buscando la respuesta

  12. Tengo una Duda, Como puedo Solicitar o Ejecutar Acceso Root a una aplicacion, y ejecutar comandos ROOT, Por favor me podrian colaborar, tengo un proyecto antiguo, pero con el nuevo android Studio no funciona

  13. Hola estoy haciendo una WebApp, sin Android studio y necesito que al solicitar subir un Archivo me de a elegir entre cámara y sdcard. Ahora mismo al pulsarlo se me abre directamente una aplicación predefinida para explorar archivos, pero no me da la opción de hacer foto desde la cámara.
    He modificado manifiest y le he dado permisos a la cámara.
    Mi pregunta es: el resto de código que se pega en la clase principal, exactamente en que archivo decompilado se pega?
    Gracias y perdonad mis bajos conocimientos.

  14. Gracias por el aporte se agradece estaba buscando algo como esto, pero mi duda es la siguiente después de subir mi aplicación al Play Store tengo un problema con versiones de Android de 5.1 en adelante, al momento de que estos usuarios antes de instalar o bajar la app no les muestra el cartel de aceptar permisos antes de descargarla simplemente de comienza a descargar e instalar, y con usuarios de Android 5.0 hacía bajo si les hace la pregunta antes de instalar. ¿Cuál sería el motivo en cuestión?
    Espero haberme explicado de manera correcta.

  15. Hola buenos días, tengo una duda soy nuevo en el mundo de Android y necesito saber si es posible guardar una imagen de la galería a la nube o la bd en este caso sqlite… gracias por todo espero tu pronta respuesta. Saludos ……

  16. Hola, me puedes ayudar? tengo una app desarrollada con android estudio, basicamente un cliente ftp, mi problema es que desde la version 6.0 de android no se me pasas fotografias al servidor, funciona perfectamente en versiones anteriores a Android 6.0. Talvez sea problema en permisos?

  17. Buen di yo tengo 4 permisos en el manifest:
    READ_EXTERNAL_STORAGE
    WRITE_EXTERNAL_STORAGE
    READ_STATE_PHONE
    INTERNET

    Declare 4 variables int para cada check

    Y 4 private static final int para cada uno,

    hice un método donde pongo los if para ver el estado del permiso

    y el override aparte del oncreate

    pero no me marca el error “lo sentimos la aplica…..”

    Que hago?

  18. Hola, yo tengo un problema con esto, he realizado todo el codigo proporcionado, y al ejecutar la aplicaciones me muestra el error “Lamentablemente, la aplicación Programa de instalación del paquete se detuvo.”
    alguna idea de que es lo que pasa?

  19. Hola Andrea,

    Gracias por el código y la explicación, me a servido a la perfección para una app que estamos haciendo en praticas.

  20. Muy buen tutorial bien explicado.
    tengo un problemilla porfis help y no se si es por los permisos, pero trato de llamar a la camara por INTENT para coger los resultados en onActivityforResult pero se detiene y en el Android monitor me sale que se ha denegado la accion es esta MediaStore.IMAGE_CAPTURE.
    Gracias de antemano

Dejar respuesta

Adivina adivinanza *