Permisos en Android

Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Los permisos de la app ayudan a mantener segura la privacidad del usuario, ya que protegen el acceso a lo siguiente:

  • Datos restringidos, como el estado del sistema y la información de contacto de los usuarios
  • Acciones restringidas, como conectarte a un dispositivo vinculado y grabar audio

En esta página, se proporciona una descripción general del funcionamiento de los permisos de Android y se incluye un flujo de trabajo general para usar permisos, descripciones de diferentes tipos de permisos y algunas prácticas recomendadas a fin de utilizarlos en la app. En otras páginas, se explica el proceso para minimizar las solicitudes de permisos de la app, declarar permisos, solicitar permisos de tiempo de ejecución y restringir la forma en la que pueden interactuar otras apps con los componentes de la tuya.

A fin de ver una lista completa de los permisos de la app para Android, visita la página de referencia de la API de permisos.

Para ver algunas de las apps de ejemplo que demuestran el flujo de trabajo de permisos, visita el repositorio de muestras de permisos de Android en GitHub.

Flujo de trabajo para el uso de permisos

Si tu app ofrece funcionalidades que pueden requerir acceso a datos restringidos o acciones restringidas, determina si puedes obtener la información o realizar las acciones sin necesidad de declarar permisos. Puedes cumplir con muchos casos de uso en tu app, como tomar fotos, pausar la reproducción de contenido multimedia y mostrar anuncios relevantes, sin necesidad de declarar ningún permiso.

Si decides que tu app debe acceder a datos restringidos o realizar acciones restringidas a fin de cumplir con un caso de uso, declara los permisos adecuados. Algunos permisos, conocidos como permisos en el momento de la instalación, se otorgan automáticamente cuando se instala tu app. Otros permisos, conocidos como permisos de tiempo de ejecución, requieren que tu app vaya un paso más allá y solicite el permiso durante el tiempo de ejecución.

En la Figura 1, se ilustra el flujo de trabajo para usar permisos de apps:

Figura 1: Flujo de trabajo general para usar permisos en Android

Tipos de permisos

Android categoriza los permisos en diferentes tipos, incluidos los del momento de la instalación, los permisos de tiempo de ejecución y los permisos especiales. Cada tipo de permiso indica el alcance de los datos restringidos a los que puede acceder la app, así como el alcance de las acciones restringidas que puede realizar, cuando el sistema le otorga ese permiso. El nivel de protección de cada permiso se basa en su tipo y se muestra en la página de referencia de la API de permisos.

Permisos en el momento de la instalación

La imagen de la izquierda muestra una lista de los permisos en el momento de la instalación de una app. En la imagen de la derecha, se muestra un diálogo emergente que contiene 2 opciones: permitir y rechazar.
Figura 2: La lista de permisos en el momento de la instalación de una app, que aparece en una tienda de aplicaciones.

Los permisos que se solicitan durante la instalación otorgan a la app acceso limitado a datos restringidos o permiten que realice acciones restringidas que casi no afectan al sistema ni a otras apps. Cuando declaras permisos durante la instalación de la app, una tienda de aplicaciones presenta al usuario un aviso de permiso al momento de la instalación cuando ve la página de detalles de la app, como se muestra en la figura 2. El sistema le otorga automáticamente a la app los permisos cuando el usuario la instala.

Android incluye varios subtipos de permisos en el momento de la instalación, incluidos los permisos normales y los de firma.

Permisos normales

Estos permisos permiten el acceso a datos y acciones que se extienden más allá de la zona de pruebas de la app, pero suponen un riesgo mínimo para la privacidad del usuario y el funcionamiento de otras apps.

El sistema asigna el nivel de protección normal a los permisos normales.

Permisos de firma

El sistema otorga un permiso de firma a una app solo cuando está firmada por el mismo certificado que la app que define el permiso.

Las aplicaciones que implementan servicios con privilegios, como los servicios Autocompletar o VPN, también usan permisos de firma. Estas apps requieren permisos de firma de vinculación de servicio para que solo el sistema pueda vincularse a los servicios.

El sistema asigna el nivel de protección signature a los permisos de firma.

Permisos de tiempo de ejecución

Una ventana emergente que contiene 2 opciones: Permitir (Allow) y Rechazar (Deny).
Figura 3: La solicitud de permiso del sistema que aparece cuando la app solicita un permiso de tiempo de ejecución.

Los permisos de tiempo de ejecución, también conocidos como permisos peligrosos, le brindan a la app acceso adicional a datos restringidos o permiten que realice acciones restringidas que afectan de forma más significativa el sistema y a otras apps. Por lo tanto, debes solicitar permisos de tiempo de ejecución en la app antes de poder acceder a los datos restringidos o realizar acciones restringidas. No supongas que estos permisos se otorgaron antes. Revísalos y, si es necesario, solicítalos antes de cada acceso.

Cuando la app solicita un permiso de tiempo de ejecución, el sistema presenta un mensaje de este permiso, como se muestra en la figura 3.

Muchos permisos de tiempo de ejecución acceden a los datos privados del usuario, un tipo especial de datos restringidos que incluye información que puede ser sensible. Algunos ejemplos de datos privados del usuario incluyen la ubicación y la información de contacto.

El micrófono y la cámara proporcionan acceso a información particularmente sensible. Por lo tanto, el sistema te ayuda a explicar por qué la app accede a esta información.

El sistema asigna el nivel de protección dangerous a los permisos de tiempo de ejecución.

Permisos especiales

Los permisos especiales corresponden a operaciones particulares de la app. Solo la plataforma y los OEM pueden definir permisos especiales. Además, la plataforma y los OEM suelen definir permisos especiales cuando quieren proteger el acceso a acciones particularmente importantes, como el dibujo sobre otras apps.

La página Acceso especial de apps en la configuración del sistema contiene un conjunto de operaciones que el usuario puede alternar. Muchas de estas operaciones se implementan como permisos especiales.

Cada permiso especial tiene sus propios detalles de implementación. Las instrucciones para usar cada permiso especial aparecen en la página de referencia de la API de permisos. El sistema asigna el nivel de protección appop a los permisos especiales.

Grupos de permisos

Los permisos pueden pertenecer a grupos de permisos. Estos grupos constan de un conjunto de permisos relacionados de forma lógica. Por ejemplo, los permisos para enviar y recibir mensajes SMS pueden pertenecer al mismo grupo, ya que ambos se relacionan con la interacción de la aplicación con SMS.

Los grupos de permisos ayudan al sistema a minimizar la cantidad de diálogos del sistema que se presentan al usuario cuando una app solicita permisos muy relacionados. Cuando a un usuario se le solicita que otorgue permisos para una aplicación, los permisos que pertenecen al mismo grupo se presentan en la misma interfaz. Sin embargo, los permisos pueden cambiar de grupo sin previo aviso, por lo que no debes suponer que un permiso en particular está agrupado con cualquier otro permiso.

Prácticas recomendadas

Los permisos de la app se basan en las funciones de seguridad del sistema y ayudan a Android a cumplir con los siguientes objetivos relacionados con la privacidad del usuario:

  • Control: El usuario controla los datos que comparte con las apps.
  • Transparencia: El usuario comprende los datos que usa una app y el motivo por el que accede a ellos.
  • Minimización de datos: Una app accede solo a los datos necesarios para una tarea o acción específica que el usuario invoca y los usa.

En esta sección, se presenta un conjunto de prácticas recomendadas principales para usar los permisos de manera efectiva en tu app. Si quieres obtener más detalles para trabajar con los permisos en Android, visita la página de prácticas recomendadas de permisos de la app.

Solicita una cantidad mínima de permisos

Cuando el usuario solicita una acción específica en tu app, esta solo debe solicitar los permisos que necesita para completarla. Según cómo uses los permisos, puede haber una forma alternativa para cumplir con el caso de uso de tu app sin depender del acceso a información sensible.

Asocia permisos de tiempo de ejecución con acciones específicas

Solicita permisos lo más tarde posible en los flujos de casos de uso de la app. Por ejemplo, si la app permite que los usuarios envíen mensajes de audio a otras personas, espera hasta que el usuario navegue a la pantalla de mensajes y presione el botón Enviar mensaje de audio. Después de que el usuario presione el botón, la app podrá solicitar acceso al micrófono.

Considera las dependencias de tu app

Cuando incluyes una biblioteca, también heredas sus requisitos de permisos. Ten en cuenta los permisos que requiere cada dependencia y para qué se usan.

Sé transparente

Cuando realices una solicitud de permisos, sé claro con respecto a la información a la que accedes, el motivo y las funcionalidades que se ven afectadas si se niegan los permisos, de modo que los usuarios puedan tomar decisiones fundamentadas.

Crea accesos explícitos al sistema

Cuando accedas a hardware o datos sensibles, como la cámara o el micrófono, ofrece una indicación continua en tu app si el sistema aún no proporciona estos indicadores. Este recordatorio ayuda a los usuarios a comprender con exactitud cuándo tu app accede a datos restringidos o realiza acciones restringidas.

Permisos en los componentes del sistema

Los permisos no solo se utilizan para solicitar funcionalidades del sistema. Los componentes del sistema de la app pueden restringir qué otras apps pueden interactuar con ella, según se describe en la página sobre cómo restringir interacciones con otras apps.