PermissionController

PermissionController Mainline 模組包含隱私權政策和 與授予及管理權限 (例如政策和 授予及管理權限的 UI)。

關於 PermissionController

PermissionController 模組會處理權限相關的 UI、邏輯和角色 ,允許應用程式基於特定用途存取。此控制項可控管下列內容:

  • 授予執行階段權限 (包括授予系統應用程式)
  • 執行階段權限管理 (包括權限分組)
  • 執行階段權限使用情形追蹤
  • 角色

自 Android 12 起,架構和系統伺服器 Role 的類別 都會移至模組,讓 Role 完全模組。

在 Android 10 中,「套件安裝程式」應用程式 分成多個部分,讓權限邏輯能夠更新。身為 可更新的 Mainline 模組,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 中,權限 模組程式碼已從 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) 可使用範例指令移動修補程式 從原始專案目錄複製到新專案目錄

從架構/基本/apex/權限遷移修補程式

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

從套件/應用程式/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 主題 (顏色、邊界、字型和 可繪項目) 使用執行階段資源疊加層 (RROS)