Saltar a contenido

Los permisos en Android

Los permisos ayudan a proteger la privacidad del usuario y a controlar qué datos o acciones puede realizar una aplicación.
Sirven para restringir el acceso a:

  • Datos sensibles: contactos, ubicación, estado del sistema.
  • Acciones restringidas: conectarse a dispositivos externos, grabar audio, enviar SMS, etc.

En muchos casos, una app puede cumplir su función sin solicitar permisos adicionales (ej. reproducir contenido multimedia o mostrar anuncios). Pero si necesita acceder a recursos sensibles, debe declarar y solicitar los permisos correspondientes.

Permisos

Tipos de permisos

1. Permisos en el momento de instalación

  • Se conceden automáticamente al instalar la app.
  • Otorgan acceso limitado a datos o acciones de bajo riesgo.

Permisos normales:

  • Acceden a datos fuera de la sandbox, pero con riesgo mínimo.
  • Ejemplo: acceso a Internet.

Permisos de firma:

  • Solo se otorgan si la app está firmada con el mismo certificado que la app o el SO que define el permiso.
  • Usados en servicios sensibles como VPN o Autocompletar.

2. Permisos de tiempo de ejecución (peligrosos)

  • Se solicitan cuando la app los necesita durante la ejecución.
  • Requieren aprobación explícita del usuario.
  • Ejemplos: cámara, micrófono, ubicación, contactos.
  • La app debe verificar antes de usarlos y volver a solicitarlos si no están concedidos.

Solicitud de permiso en tiempo de ejecución

if (ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
    ActivityCompat.requestPermissions(this,
        arrayOf(Manifest.permission.CAMERA), 1)
}

3. Permisos especiales

  • Definidos por el sistema o fabricantes (OEM).
  • Protegen funciones críticas como modificar ajustes del sistema o mostrar sobre otras apps.
  • Solo se conceden en casos muy concretos.

Grupos de permisos

  • Varios permisos relacionados pueden agruparse en un mismo diálogo.
  • Ejemplo: el grupo Contactos incluye lectura y escritura de contactos.
  • El usuario concede el grupo entero, simplificando la experiencia.

Buenas prácticas

  • Solicita el mínimo necesario: no pidas más permisos de los que uses realmente.
  • Asocia permisos a acciones específicas: pide el permiso justo en el momento en que se necesita.

Ejemplo de buena práctica

Una app de mensajería que permite enviar notas de voz no pide acceso al micrófono al instalarse.
Solo lo solicita cuando el usuario pulsa el botón Grabar audio.

  • Control y transparencia: el usuario debe entender qué datos usas y para qué.
  • Minimización de datos: la app accede solo a lo estrictamente necesario.

Permisos en componentes de la app

Los permisos también sirven para restringir interacciones entre aplicaciones:

  • Una app puede impedir que otras accedan a sus componentes internos (actividades, servicios, receptores, proveedores).
  • Esto asegura que solo apps con permiso explícito puedan comunicarse con ella.

Gary Kovacs

Privacy is not an option, and it shouldn't be the price we accept for just getting on the Internet.

Actividades

  • AC 110 (RA1 / CE1b CE1d CE1e / IC1 / 1p) Clasifica estos permisos en normales o peligrosos: acceso a Internet, leer contactos, cámara, vibración.
  • AC 111 (RA1 / CE1e / IC1 / 1p) Busca qué diferencia hay entre permisos de instalación y permisos de tiempo de ejecución a partir de Android 6.
  • PR 112 (RA1 / CE1a CE1b CE1d CE1e CE1f / IC1 / 3p) Crea un ejemplo (en pseudocódigo o Kotlin simplificado) de cómo pedir permiso para acceder al micrófono solo cuando el usuario pulse un botón.
  • PR 113 (RA1 / CE1a CE1b CE1f / IC1 / 3p) Debes analizar los posibles tipos de permisos que puede tener la aplicación WhatsApp