PermissionController モジュールにより、更新可能なプライバシー ポリシーと UI 要素(権限の付与と管理に関するポリシーや UI など)を利用できるようになります。
Android 12 以降では、Role
のフレームワークとシステム サーバーのクラスを、Role
を完全にモジュール化するためにモジュールに移動しています。
PermissionController について
com.google.android.permissioncontroller
APK は、権限関連の UI、ロジック、役割を処理して、特定の目的でアプリにアクセスできるようにし、次の制御を行います。
ランタイム権限の付与(システムアプリへの付与など)
ランタイム権限の管理(権限のグループ化など)
ランタイム権限の使用状況のトラッキング
役割
Android 9 では、このような権限は com.google.android.packageinstaller
の一部でした。Android 10 では、パッケージ インストーラ アプリがセクションに分割され、権限ロジックの更新が可能になりました。更新可能な Mainline モジュールとして、PermissionController は次のことを行います。
@hide
API を使用せず、安定版の@SystemApi
API のみを使用して、フレームワークとやり取りします。優先度が 0 より大きい権限関連のインテントを処理します。
OEM がテーマをカスタマイズするためのメカニズムを提供します。
役割管理、権限取り消し、基本権限情報(設定用)など、システムとアプリでバインドできるサービスを提供します。
使用していないアプリの自動取り消しをサポートします(Android 11 の新機能)。
使用していないアプリを自動的に取り消す
Android 11 では、PermissionsController モジュールで、長期間使用されていないアプリのランタイム権限を自動的に取り消すことができます。SDK 30 以降をターゲットとしているアプリの場合、自動取り消しはデフォルトで有効になっていますが、SDK 29 以前をターゲットとしているアプリでは、デフォルトで無効になっています。自動取り消しを有効にすると、すべてのランタイム権限に影響します。ただし、事前に付与されたすべての権限(ポリシーおよびシステムによって固定された権限、デフォルトで付与される権限、または役割によって付与される権限など)は除外されます。詳しくは、使用していないアプリの権限を自動リセットするをご覧ください。
パッケージの形式
PermissionController モジュールは APK ファイルとして配布されます。
モジュールの境界
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 のテーマ(色、マージン、フォント、ドローアブル)をカスタマイズできます。