Modalità di protezione avanzata

La modalità di protezione avanzata di Android (AAPM) è una nuova funzionalità lanciata in Android 16 che mira a migliorare la sicurezza dei dispositivi Android per gli utenti a rischio, come giornalisti e attivisti. Funziona come una singola impostazione che implementa un insieme di configurazioni predeterminate progettate per rafforzare la protezione del dispositivo. AAPM dà la priorità alla sicurezza rispetto ad alcune funzionalità e usabilità potenzialmente ridotte, il che significa che alcune funzionalità potrebbero essere limitate per ridurre al minimo la superficie di attacco.

Impatto

AAPM modifica il comportamento di alcuni servizi di sistema per migliorare la sicurezza. Se la tua app si rivolge a utenti attenti alla sicurezza, devi adattarti a queste limitazioni.

  • Segnali di sistema: quando un utente attiva AAPM, il sistema invia una notifica alle app a cui è iscritto in modo che possano adattarsi all'ambiente con limitazioni.
  • Modifiche richieste all'app: devi aggiornare l'app per gestire le modifiche comportamentali attivate da AAPM. Ad esempio, la tua app deve tenere conto di:
    • Connessioni di rete 2G e WEP disattivate.
    • Sideloading delle app bloccato.
    • Logging forense attivo.
    • Chiamate bloccate da numeri sconosciuti.
    • Meccanismi di protezione antispam attivati per i link nelle app di messaggistica.
    • Ulteriori mitigazioni personalizzate per proteggere gli utenti a rischio

Integrazione con AAPM

Per utilizzare le API pertinenti, è necessario dichiarare la seguente autorizzazione.

Ottieni autorizzazione

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

Verifica lo stato

Verifica che l'utente abbia attivato AAPM sul dispositivo. Questa operazione viene eseguita utilizzando il servizio di 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
}

Ascolta le modifiche di runtime

Gli utenti possono attivare o disattivare AAPM mentre l'app è in esecuzione. Registra un callback per ricevere aggiornamenti in tempo reale.

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)