QuyềnController

Mô-đun permissionController Mainline chứa các chính sách quyền riêng tư và Giao diện người dùng liên quan đến việc cấp và quản lý quyền (ví dụ: các chính sách và Giao diện người dùng để cấp và quản lý quyền).

Giới thiệu về LicenseController

Mô-đun LicenseController xử lý giao diện người dùng, logic và vai trò liên quan đến quyền để cấp quyền truy cập vào các ứng dụng cho mục đích cụ thể. Chế độ này kiểm soát những nội dung sau:

  • Cấp quyền khi bắt đầu chạy (bao gồm cả cấp cho các ứng dụng hệ thống)
  • Quản lý quyền khi bắt đầu chạy (bao gồm cả việc nhóm các quyền)
  • Theo dõi mức sử dụng quyền trong thời gian chạy
  • Vai trò

Kể từ Android 12, khung và máy chủ hệ thống lớp học cho Role được chuyển vào mô-đun để Role hoàn toàn là mô-đun.

Trong Android 10, ứng dụng Package Installer (Trình cài đặt gói) được chia thành nhiều phần để cho phép cập nhật logic cấp quyền. Là một mô-đun Mainline có thể cập nhật, LicenseController:

  • Chỉ tương tác với khung thông qua @SystemApi ổn định (không sử dụng API @hide API).
  • Xử lý các ý định liên quan đến quyền có mức độ ưu tiên > 0.
  • Giới thiệu cơ chế cho phép OEM tuỳ chỉnh giao diện.
  • Cung cấp các dịch vụ mà hệ thống và các ứng dụng có thể liên kết, bao gồm quản lý vai trò, thu hồi quyền và thông tin cơ bản về quyền (đối với Cài đặt).
  • Hỗ trợ tự động thu hồi đối với các ứng dụng không dùng đến (tính năng mới trong Android 11).

Trong Android9, kiểm soát quyền là một phần của com.android.packageinstaller.

Tự động thu hồi đối với các ứng dụng không dùng đến

Trong Android 11, mô-đun PermissionsController có thể tự động thu hồi quyền khi bắt đầu chạy đối với những ứng dụng mà bạn chưa dùng đến một khoảng thời gian dài. Ứng dụng nhắm đến SDK 30 trở lên sẽ tự động bị thu hồi được bật theo mặc định, trong khi ứng dụng nhắm đến SDK 29 trở xuống sẽ tự động thu hồi disabled (tắt) theo mặc định. Khi được bật, tính năng tự động thu hồi sẽ ảnh hưởng đến tất cả thời gian chạy nhưng miễn trừ tất cả các quyền đã cấp trước, bao gồm các quyền theo chính sách và các quyền và quyền do hệ thống cố định được cấp theo mặc định hoặc theo vai trò. Cho chi tiết, hãy tham khảo bài viết Tự động đặt lại quyền từ trạng thái không dùng đến .

Định dạng gói

Định dạng của mô-đun LicenseController khác nhau giữa các bản phát hành.

  • Trong Android 11 trở lên, mô-đun PermissionsController nằm trong Định dạng APEX và có thể cập nhật. Tên gói là com.google.android.permission.

  • Trong Android 10, mô-đun PermissionsController có định dạng APK và không có thể cập nhật. Tên gói là com.google.android.permissioncontroller.

Ranh giới mô-đun

Trong Android 12, quyền mã mô-đun được di chuyển khỏi packages/apps/PermissionController (dự án platform/packages/apps/PackageInstaller) và frameworks/base/apex/permission (đây là thư mục con của dự án frameworks/base).

Cấu trúc dự án mới của packages/modules/Permission như sau:

  • Tệp từ frameworks/base/apex/permission
  • Tệp LicenseController qua packages/apps/PermissionController

OEM có thể dùng lệnh mẫu để hỗ trợ di chuyển bản vá từ các thư mục dự án ban đầu đến thư mục dự án mới.

Di chuyển bản vá từ khung/cơ sở/apex/quyền

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

Di chuyển bản vá từ các gói/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

Tuỳ chỉnh

OEM có thể tuỳ chỉnh giao diện người dùng của quyền (màu sắc, lề, phông chữ và đối tượng có thể vẽ) bằng cách sử dụng lớp phủ tài nguyên trong thời gian chạy (RROS).