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ề PermissionController
Mô-đun PermissionController xử lý giao diện người dùng, logic và các vai trò liên quan đến quyền để cho phép các ứng dụng truy cập vì mục đích cụ thể. Thẻ 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ả việc cấp quyền 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 việc sử dụng quyền khi bắt đầu chạy
- Vai trò
Kể từ Android 12, các lớp máy chủ hệ thống và khung cho Role
sẽ được chuyển vào mô-đun để giúp Role
hoàn toàn theo kiểu mô-đun.
Trong Android 10, ứng dụng Trình cài đặt gói được chia thành nhiều phần để cho phép cập nhật logic về quyền. Là một mô-đun Mainline có thể cập nhật, PermissionController:
- Chỉ tương tác với khung thông qua @SystemApi ổn định (không sử dụng API @hide).
- Xử lý các ý định liên quan đến quyền với mức độ ưu tiên > 0.
- Cung cấp một cơ chế cho phép các OEM tuỳ chỉnh giao diện.
- Cung cấp các dịch vụ mà hệ thống và ứng dụng có thể liên kết, bao gồm cả hoạt động quản lý vai trò, thu hồi quyền và thông tin cơ bản về quyền (đối với phần Cài đặt).
- Hỗ trợ tính năng tự động thu hồi quyền đối với các ứng dụng không dùng đến (mới có trong Android 11).
Trong Android 9, chế độ kiểm soát quyền là một phần của com.android.packageinstaller
.
Tự động thu hồi quyền đố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 các quyền khi bắt đầu chạy đối với những ứng dụng không dùng đến trong thời gian dài. Các ứng dụng nhắm đến SDK 30 trở lên sẽ bật tính năng tự động thu hồi theo mặc định, trong khi các ứng dụng nhắm đến SDK 29 trở xuống sẽ tắt tính năng tự động thu hồi 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ả các quyền trong thời gian chạy nhưng sẽ miễn trừ tất cả các quyền được cấp trước, bao gồm cả các quyền cố định theo chính sách và hệ thống, cũng như các quyền được cấp theo mặc định hoặc theo vai trò. Để biết thông tin chi tiết, hãy tham khảo phần Tự động đặt lại quyền của các ứng dụng không dùng đến.
Định dạng gói
Định dạng của mô-đun PermissionController sẽ khác nhau giữa các bản phát hành.
Trong Android 11 trở lên, mô-đun PermissionController ở đị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 PermissionController ở định dạng APK và không thể cập nhật. Tên gói là
com.google.android.permissioncontroller
.
Ranh giới mô-đun
Trong Android 12, mã mô-đun Quyền được di chuyển từ packages/apps/PermissionController
(dự án platform/packages/apps/PackageInstaller
) và frameworks/base/apex/permission
(đây là một thư mục con của dự án frameworks/base
).
Cấu trúc dự án mới cho packages/modules/Permission
như sau:
- Tệp từ
frameworks/base/apex/permission
- Các tệp PermissionController từ
packages/apps/PermissionController
Các OEM có thể sử dụng các lệnh mẫu để giúp di chuyển các bản vá từ thư mục dự án ban đầu sang thư mục dự án mới.
Di chuyển bản vá từ 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
Di chuyển một bản vá từ 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
Tuỳ chỉnh
Các OEM có thể tuỳ chỉnh giao diện người dùng về quyền (màu sắc, lề, phông chữ và các thành phần có thể vẽ) bằng cách sử dụng lớp phủ tài nguyên thời gian chạy (RRO).