Permisos en Android

Los permisos de la app ayudan a admitir 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 del usuario
  • Acciones restringidas, como conectarte a un dispositivo vinculado y grabar audio

En esta página, se proporciona una descripción general sobre el funcionamiento de los permisos de Android y se incluye un flujo de trabajo de alto nivel para usar permisos, descripciones de diferentes tipos de permisos y algunas prácticas recomendadas a fin de usarlos en tu app. Otras páginas explican el proceso para evaluar si tu app necesita solicitar permisos, 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: Diagrama en el que se muestra el flujo de trabajo de alto nivel 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 tu app puede acceder, así como el alcance de las acciones restringidas que puede realizar, cuando el sistema le otorga ese permiso.

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 en el momento de la instalación otorgan a tu app acceso limitado a los datos restringidos y permiten que realice acciones restringidas que casi no afectan al sistema o a otras apps. Cuando declaras permisos en el momento de la instalación en la app, el sistema le otorga automáticamente los permisos cuando el usuario la instala. Una tienda de apps le muestra un aviso de permiso en el momento de la instalación al usuario cuando ve la página de detalles de la app, como se muestra en la Figura 2.

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 los datos y las acciones que se extienden más allá de la zona de pruebas de tu app. Sin embargo, los datos y las acciones presentan muy poco riesgo para la privacidad del usuario y el funcionamiento de otras apps.

El sistema asigna el nivel de protección "normal" a los permisos normales, como se muestra en la página de referencia de la API de permisos.

Permisos de firma

Si la app declara un permiso de firma definido por otra app, y si ambas están firmadas con el mismo certificado, el sistema otorga el permiso a la primera app en el momento de la instalación. De lo contrario, no se podrá otorgar permiso a esa primera app.

El sistema asigna el nivel de protección "firma" a los permisos de firma, como se muestra en la página de referencia de la API de permisos.

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 tu app solicita un permiso de tiempo de ejecución.

Los permisos de tiempo de ejecución, también conocidos como permisos peligrosos, le otorgan a tu app acceso adicional a datos restringidos y permiten que realice acciones restringidas que afectan de manera más considerable el sistema y otras apps. Por lo tanto, debes solicitar permisos de tiempo de ejecución en tu app antes de poder acceder a los datos restringidos o realizar acciones restringidas. 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 brindan 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 "peligroso" a los permisos de tiempo de ejecución, como se muestra en la página de referencia de la API de permisos.

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 permisos especiales.

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 estos datos.
  • Minimización de datos: Una app accede y usa solo los datos necesarios para una tarea o acción específica que el usuario invoca.

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 tu app. Por ejemplo, si tu 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 para enviar un 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 solicitas permisos, sé claro con respecto a la información a la que accedes y a la razón por la que lo haces, de manera que los usuarios puedan tomar decisiones fundamentadas.

Crea accesos explícitos al sistema

Cuando accedes a datos sensibles o al hardware, como la cámara o el micrófono, proporciona una indicación continua en tu app si el sistema todavía no brinda estos indicadores. Este recordatorio ayuda a los usuarios a comprender exactamente 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, como se describe en la página para restringir interacciones con otras apps.

Recursos adicionales

Para obtener más información sobre los permisos de la app en Android, consulta los siguientes recursos adicionales:

Muestras