進階保護模式

Android 進階保護模式 (AAPM) 是 Android 16 推出的新功能,旨在為記者和社運人士等高風險使用者,提升 Android 裝置的安全性。這項功能會實作一組預先決定的設定,以加強裝置保護力。AAPM 會優先考量安全性,而非某些可能降低的功能和可用性,因此部分功能可能會受到限制,以盡量減少攻擊面。

影響

AAPM 會變更特定系統服務的行為,以提升安全性。如果您的應用程式服務對象是注重安全性的使用者,就必須配合這些限制。

  • 系統信號:使用者啟用 AAPM 時,系統會通知已訂閱的應用程式,以便適應受限環境。
  • 必須修改應用程式:您必須更新應用程式,才能處理 AAPM 觸發的行為變更。舉例來說,您的應用程式必須考量:
    • 停用 2G 和 WEP 網路連線。
    • 封鎖應用程式側載。
    • 啟用鑑識記錄功能。
    • 封鎖不明號碼的來電。
    • 針對通訊應用程式中的連結啟用垃圾訊息防護機制。
    • 額外的自訂防護措施,可保護高風險使用者

與 AAPM 整合

如要使用相關 API,必須宣告下列權限。

取得權限

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

檢查狀態

確認使用者已在裝置中啟用 AAPM。這項作業是透過 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
}

監聽執行階段變更

使用者可以在應用程式執行期間開啟或關閉 AAPM。註冊回呼,即可接收即時更新。

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)