PermissionController メインライン モジュールには、アクセス許可の付与と管理に関連するプライバシー ポリシーと UI (たとえば、アクセス許可の付与と管理のためのポリシーと UI) が含まれています。
PermissionController について
PermissionController モジュールは、アクセス許可関連の UI、ロジック、およびロールを処理して、特定の目的でアプリにアクセスできるようにします。以下を制御します。
- 実行時のパーミッションの付与 (システムアプリへの付与を含む)
- 実行時のパーミッション管理 (パーミッションのグループ化を含む)
- 実行時のパーミッションの使用状況の追跡
- 役割
Android 12 以降では、 Role
Role
完全にモジュール化されています。
Android 10 では、パッケージ インストーラー アプリがセクションに分割され、パーミッション ロジックを更新できるようになりました。更新可能なメインライン モジュールとして、PermissionController:
- 安定した @SystemApi を介してのみフレームワークと対話します (@hide API を使用しません)。
- 優先度 > 0 のアクセス許可関連のインテントを処理します。
- OEM がテーマをカスタマイズできるようにするメカニズムを公開します。
- システムとアプリケーションがバインドできるサービスを提供します。これには、ロール管理、アクセス許可の取り消し、および基本的なアクセス許可情報 (設定用) が含まれます。
- 未使用アプリの自動取り消しをサポート (Android 11 の新機能)。
Android9 では、権限制御はcom.android.packageinstaller
の一部です。
未使用アプリの自動取り消し
Android 11 では、PermissionsController モジュールは、長期間使用されていないアプリのランタイム パーミッションを自動的に取り消すことができます。 SDK 30 以上を対象とするアプリでは、デフォルトで自動取り消しが有効になっていますが、SDK 29 以下を対象とするアプリでは、デフォルトで自動取り消しが無効になっています。有効にすると、自動取り消しはすべての実行時アクセス許可に影響しますが、事前に付与されたすべてのアクセス許可 (ポリシーおよびシステム固定のアクセス許可と、既定またはロールによって付与されるアクセス許可を含む) は免除されます。詳細については、使用していないアプリから権限を自動リセットするを参照してください。
パッケージ形式
PermissionController モジュールの形式は、リリースによって異なります。
Android 11 以降では、PermissionController モジュールはAPEX形式であり、更新可能です。パッケージ名は
com.google.android.permission
です。Android 10 では、PermissionController モジュールは APK 形式であり、更新できません。パッケージ名は
com.google.android.permissioncontroller
です。
モジュール境界
Android 12 では、Permission モジュール コードがpackages/apps/PermissionController
( platform/packages/apps/PackageInstaller
プロジェクト) およびframeworks/base/apex/permission
(これはframeworks/base
プロジェクトのサブディレクトリです) から移動されました。
packages/modules/Permission
の新しいプロジェクト構造は次のとおりです。
-
frameworks/base/apex/permission
からのファイル packages/apps/PermissionController
の PermissionController ファイル
OEM はサンプル コマンドを使用して、パッチを元のプロジェクト ディレクトリから新しいプロジェクト ディレクトリに移動できます。
Frameworks/base/apex/permission からパッチを移動します
root/frameworks/base/$ git format-patch -1 --relative=apex/permission commit --stdout > patch-file.txt
root/packages/modules/Permission$ git am -p2 patch-file.txt
packages/apps/PermissionController からパッチを移動します
root/packages/apps/PermissionController$ git format-patch -1 commit --stdout > patch-file.txt
root/packages/modules/Permission$ git am -p2 --directory=PermissionController patch-file.txt
カスタマイズ
OEM は、ランタイム リソース オーバーレイ (RROS)を使用して、アクセス許可の UI テーマ (色、余白、フォント、ドローアブル) をカスタマイズできます。