โมดูล 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)