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)