權限控制器

PermissionController 模塊啟用可更新的隱私策略和 UI 元素(例如,有關授予和管理權限的策略和 UI)。

在Android的12起,框架和系統服務器類Role移動到模塊中,使Role完全模塊化。

關於權限控制器

com.google.android.permissioncontroller APK把手許可相關的UI,邏輯和角色,以允許應用程序為特定目的的訪問。它控制以下內容:

  • 運行時權限授予(包括授予系統應用程序)

  • 運行時權限管理(包括權限分組)

  • 運行時權限使用跟踪

  • 角色

在Android中如圖9所示,這樣的權限是的一部分com.google.android.packageinstaller 。在 Android 10 中,Package Installer 應用程序被拆分為多個部分,以支持更新權限邏輯。作為一個可更新的 Mainline 模塊,PermissionController:

  • 交互只通過穩定的框架@SystemApi (無@hide API使用)。

  • 處理優先級高於 0 的權限相關意圖。

  • 公開了一種使 OEM 能夠自定義主題的機制。

  • 提供系統和應用可以綁定的服務,包括角色管理、權限撤銷和基本權限信息(用於設置)。

  • 支持自動撤銷未使用的應用程序(Android 11 中的新功能)。

自動撤銷未使用的應用程序

在 Android 11 中,PermissionsController 模塊可以自動撤銷長時間未使用的應用的運行時權限。應用定位SDK 30或更高的具有自動撤銷啟用默認情況下,同時應用定位SDK 29或降低已自動撤銷默認為禁用。啟用後,自動撤銷會影響所有運行時權限,但會免除所有預先授予的權限,包括策略和系統固定權限以及默認或角色授予的權限。有關詳細信息,請參閱自動復位權限與未使用的應用程序

包裝格式

PermissionController 模塊以 APK 文件的形式提供。

模塊邊界

在Android中12中,權限模塊代碼從移動packages/apps/PermissionController (在platform/packages/apps/PackageInstaller項目)和frameworks/base/apex/permission (這是的子目錄frameworks/base項目)。

對於新的項目結構packages/modules/Permission如下:

  • 從文件frameworks/base/apex/permission
  • 從PermissionController文件packages/apps/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廠商可以自定義使用許可UI主題(顏色,邊距,字體和繪圖)運行時資源重疊(複製權組織)