ตัวควบคุมสิทธิ์

โมดูล PermissionController Mainline มีนโยบายความเป็นส่วนตัวและ UI ที่เกี่ยวข้องกับการให้และการจัดการสิทธิ์ (เช่น นโยบายและ UI การให้และการจัดการสิทธิ์)

เกี่ยวกับ PermissionController

โมดูล PermissionController จะจัดการ UI, ตรรกะ และบทบาทที่เกี่ยวข้องกับสิทธิ์เพื่ออนุญาตให้แอปเข้าถึงเพื่อวัตถุประสงค์หนึ่งๆ โดยจะควบคุมสิ่งต่อไปนี้

  • การให้สิทธิ์รันไทม์ (รวมถึงการให้สิทธิ์แก่แอประบบ)
  • การจัดการสิทธิ์รันไทม์ (รวมถึงการจัดกลุ่มสิทธิ์)
  • การติดตามการใช้สิทธิ์รันไทม์
  • บทบาท

ตั้งแต่ Android 12 เป็นต้นไป ระบบจะย้ายคลาสเฟรมเวิร์กและเซิร์ฟเวอร์ของระบบสำหรับ Role ไปยังโมดูลเพื่อให้ Role เป็นโมดูลอย่างสมบูรณ์

ใน Android 10 แอปตัวติดตั้งแพ็กเกจจะแบ่งออกเป็นส่วนๆ เพื่อให้อัปเดตตรรกะสิทธิ์ได้ ในฐานะโมดูลเมนไลน์ที่อัปเดตได้ PermissionController จะทําสิ่งต่อไปนี้

  • โต้ตอบกับเฟรมเวิร์กผ่าน @SystemApi ที่เสถียรเท่านั้น (ไม่มีการใช้ @hide API)
  • จัดการ Intent ที่เกี่ยวข้องกับสิทธิ์ซึ่งมีลําดับความสําคัญมากกว่า 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"
  • ไฟล์ 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 ของสิทธิ์ (สี ระยะขอบ แบบอักษร และรูปภาพ) ได้โดยใช้การวางซ้อนทรัพยากรรันไทม์ (RROS)