高度な保護機能モード

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 をオンまたはオフに切り替えることができます。Callback を登録して、リアルタイムの更新情報を受け取ります。

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)