โมดูล PermissionController Mainline มีนโยบายความเป็นส่วนตัวและ UI ที่เกี่ยวข้องกับการให้และจัดการสิทธิ์ (เช่น นโยบายและ UI สำหรับการให้และจัดการสิทธิ์)
เกี่ยวกับ PermissionController
โมดูล PermissionController จัดการ UI, ตรรกะ และบทบาทที่เกี่ยวข้องกับสิทธิ์เพื่ออนุญาตให้แอปเข้าถึงได้ตามวัตถุประสงค์ที่เฉพาะเจาะจง โดยจะควบคุมสิ่งต่อไปนี้
- การให้สิทธิ์รันไทม์ (รวมถึงการให้สิทธิ์แก่แอปของระบบ)
- การจัดการสิทธิ์รันไทม์ (รวมถึงการจัดกลุ่มสิทธิ์)
- การติดตามการใช้สิทธิ์รันไทม์
- บทบาท
ตั้งแต่ Android 12 เป็นต้นไป คลาสเฟรมเวิร์กและเซิร์ฟเวอร์ระบบ
สำหรับ Role
จะย้ายไปอยู่ในโมดูลเพื่อให้ Role เป็นโมดูลาร์อย่างสมบูรณ์
ใน Android 10 แอปโปรแกรมติดตั้งแพ็กเกจจะแยกออกเป็นส่วนๆ เพื่อให้สามารถอัปเดตตรรกะของสิทธิ์ได้ ในฐานะโมดูล Mainline ที่อัปเดตได้ PermissionController จะมีลักษณะดังนี้
- โต้ตอบกับเฟรมเวิร์กผ่าน @SystemApi ที่เสถียรเท่านั้น (ไม่มีการใช้ @hide API)
- จัดการ Intent ที่เกี่ยวข้องกับสิทธิ์ที่มีลำดับความสำคัญ > 0
- แสดงกลไกเพื่อให้ OEM ปรับแต่งธีมได้
- ให้บริการที่ระบบและแอปพลิเคชันสามารถผูกได้ ซึ่งรวมถึงการจัดการบทบาท การเพิกถอนสิทธิ์ และข้อมูลสิทธิ์พื้นฐาน (สำหรับการตั้งค่า)
- รองรับการเพิกถอนสิทธิ์อัตโนมัติสำหรับแอปที่ไม่ได้ใช้ (ใหม่ใน Android 11)
ใน Android 9 การควบคุมสิทธิ์เป็นส่วนหนึ่งของ 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 ของสิทธิ์ (สี ระยะขอบ แบบอักษร และ Drawables) ได้โดยใช้ การวางซ้อนทรัพยากรรันไทม์ (RRO)