Modo de Protección avanzada

El Modo de Protección Avanzada de Android (AAPM) es una nueva función que se lanzó en Android 16 y que tiene como objetivo mejorar la seguridad de los dispositivos Android para los usuarios en riesgo, como periodistas y activistas. Funciona como un solo parámetro de configuración que implementa un conjunto de configuraciones predeterminadas diseñadas para reforzar la protección del dispositivo. AAPM prioriza la seguridad por sobre algunas funciones y usabilidad potencialmente disminuidas, lo que significa que algunas funciones podrían estar restringidas para minimizar la superficie de ataque.

Impacto

AAPM cambia el comportamiento de ciertos servicios del sistema para mejorar la seguridad. Si tu app está dirigida a usuarios preocupados por la seguridad, debes adaptarte a estas restricciones.

  • Indicadores del sistema: Cuando un usuario habilita AAPM, el sistema notifica a las apps suscriptas para que puedan adaptarse al entorno restringido.
  • Modificaciones obligatorias de la app: Debes actualizar tu app para controlar los cambios de comportamiento que activa AAPM. Por ejemplo, tu app debe tener en cuenta lo siguiente:
    • Conexiones de red 2G y WEP inhabilitadas
    • Instalación de apps de forma local bloqueada
    • Registro forense activo
    • Llamadas bloqueadas de números desconocidos
    • Mecanismos de protección contra spam habilitados para vínculos en apps de mensajería
    • Mitigaciones personalizadas adicionales para proteger a los usuarios en riesgo

Integración con AAPM

Para usar las APIs pertinentes, se debe declarar el siguiente permiso.

Otorgar permiso

<uses-permission android:name="android.permission.QUERY_ADVANCED_PROTECTION_MODE" />

Verificar el estado

Verifica que el usuario tenga AAPM activado en el dispositivo. Esto se hace con el servicio del sistema AdvancedProtectionManager.

import android.security.advancedprotection.AdvancedProtectionManager

// ... inside your Activity or Service
val aapmManager = getSystemService(AdvancedProtectionManager::class.java)

if (aapmManager?.isAdvancedProtectionEnabled) {
    // 🛡️ User is in Advanced Protection Mode.
    // Engage shields: Disable risky features, enforce stricter authentication.
    // TODO: Add Method which implements extra protections
}

Detectar cambios en el tiempo de ejecución

Los usuarios pueden activar o desactivar AAPM mientras se ejecuta tu app. Registra una devolución de llamada para recibir actualizaciones en tiempo real.

import android.security.advancedprotection.AdvancedProtectionManager
import java.util.concurrent.Executor

// Define the callback
val aapmCallback = AdvancedProtectionManager.Callback { isEnabled ->
    if (isEnabled) {
        // TODO: User just engaged protections. Lock it down!
    } else {
        // TODO: User disabled protections. You may relax restrictions.
    }
}

// Register the callback (for example, in onStart)
// Ensure you use the correct executor (for example, mainExecutor for UI updates)
aapmManager?.registerAdvancedProtectionCallback(mainExecutor, aapmCallback)