Modo Proteção Avançada

O modo de proteção avançada do Android (AAPM, na sigla em inglês) é um novo recurso lançado no Android 16 com o objetivo de melhorar a segurança de dispositivos Android para usuários em risco, como jornalistas e ativistas. Ele funciona como uma única configuração que implementa um conjunto de configurações predeterminadas projetadas para reforçar a proteção do dispositivo. O AAPM prioriza a segurança em relação a algumas funcionalidades e usabilidade potencialmente reduzidas, o que significa que alguns recursos podem ser restritos para minimizar a superfície de ataque.

Impacto

O AAPM muda o comportamento de determinados serviços do sistema para melhorar a segurança. Se o app atende a usuários preocupados com a segurança, é necessário se adaptar a essas restrições.

  • Indicadores do sistema: quando um usuário ativa o AAPM, o sistema notifica os apps inscritos para que eles possam se adaptar ao ambiente restrito.
  • Modificações necessárias do app: é necessário atualizar o app para processar as mudanças de comportamento acionadas pelo AAPM. Por exemplo, o app precisa considerar:
    • Conexões de rede 2G e WEP desativadas.
    • Bloqueio do sideload de apps.
    • Registro forense ativo.
    • Chamadas bloqueadas de números desconhecidos.
    • Mecanismos de proteção contra spam ativados para links em apps de mensagens.
    • Mitigações personalizadas adicionais para proteger usuários em risco.

Integrar com o AAPM

Para usar as APIs relevantes, é necessário declarar a seguinte permissão.

Conseguir permissão

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

Verificar status

Verifique se o usuário ativou o AAPM no dispositivo. Isso é feito usando o serviço do 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 mudanças de execução

Os usuários podem ativar ou desativar o AAPM enquanto o app está em execução. Registre um callback para receber atualizações em tempo 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)