โมดูลเมนไลน์ PermissionsController มีนโยบายความเป็นส่วนตัว และ UI ที่เกี่ยวข้องกับการให้และจัดการสิทธิ์ (เช่น นโยบายและ UI สำหรับการให้สิทธิ์และการจัดการสิทธิ์)
เกี่ยวกับ RightController
โมดูล PermissionsController จัดการ UI, ตรรกะ และบทบาทที่เกี่ยวข้องกับสิทธิ์ เพื่ออนุญาตให้เข้าถึงแอปเพื่อวัตถุประสงค์บางอย่าง โดยจะควบคุมสิ่งต่อไปนี้
- การให้สิทธิ์รันไทม์ (รวมถึงการให้สิทธิ์แอประบบ)
- การจัดการสิทธิ์รันไทม์ (รวมถึงการจัดกลุ่มสิทธิ์)
- การติดตามการใช้สิทธิ์รันไทม์
- บทบาท
ตั้งแต่ Android 12 เป็นต้นไป เฟรมเวิร์กและเซิร์ฟเวอร์ระบบ
ชั้นเรียนของ Role
จะถูกย้ายลงในโมดูลเพื่อทำให้ Role
เป็นโมดูลทั้งหมด
ใน Android 10 แอปโปรแกรมติดตั้งแพ็กเกจ จะแบ่งออกเป็นส่วนต่างๆ เพื่อให้อัปเดตตรรกะสิทธิ์ได้ ในฐานะ โมดูลเมนไลน์ที่อัปเดตได้, PermissionsController:
- โต้ตอบกับเฟรมเวิร์กผ่าน @SystemApi ที่เสถียรเท่านั้น (ไม่มีการใช้ @hide API)
- จัดการ Intent ที่เกี่ยวข้องกับสิทธิ์ตามลำดับความสำคัญ > 0.
- แสดงกลไกสำหรับการเปิดใช้ OEM เพื่อปรับแต่งธีม
- ให้บริการที่ระบบและแอปพลิเคชันสามารถเชื่อมโยงได้ ซึ่งรวมถึง การจัดการบทบาท การเพิกถอนสิทธิ์ และข้อมูลสิทธิ์พื้นฐาน (สำหรับ การตั้งค่า)
- รองรับการเพิกถอนอัตโนมัติสำหรับแอปที่ไม่ได้ใช้ (ใหม่ใน Android 11)
ใน Android9 การควบคุมสิทธิ์เป็นส่วนหนึ่งของ
com.android.packageinstaller
เพิกถอนอัตโนมัติสำหรับแอปที่ไม่ได้ใช้
ใน Android 11 โมดูล PermissionsController สามารถทำสิ่งต่อไปนี้ได้ เพิกถอนสิทธิ์รันไทม์โดยอัตโนมัติสำหรับแอปที่ไม่ได้ใช้สำหรับ เป็นระยะเวลานาน แอปที่กำหนดเป้าหมาย SDK 30 ขึ้นไปจะมีการเพิกถอนอัตโนมัติ เปิดใช้โดยค่าเริ่มต้น ส่วนแอปที่กำหนดเป้าหมายเป็น SDK 29 หรือต่ำกว่าจะมีการเพิกถอนโดยอัตโนมัติ disable โดยค่าเริ่มต้น เมื่อเปิดใช้ การเพิกถอนอัตโนมัติจะส่งผลต่อรันไทม์ทั้งหมด แต่ยกเว้นสิทธิ์ที่ให้ล่วงหน้าทั้งหมด รวมถึงนโยบายและ สิทธิ์และสิทธิ์ที่กำหนดโดยระบบ ซึ่งมอบให้โดยค่าเริ่มต้นหรือตามบทบาท สำหรับ โปรดดูที่รีเซ็ตสิทธิ์อัตโนมัติจากที่ไม่ได้ใช้ แอป
รูปแบบแพ็กเกจ
รูปแบบของโมดูล PermissionsController จะแตกต่างกันไปในแต่ละรุ่น
ใน Android 11 ขึ้นไป โมดูล PermissionController จะอยู่ใน รูปแบบ APEX และสามารถอัปเดตได้ ชื่อแพ็กเกจคือ
com.google.android.permission
ใน Android 10 โมดูล PermissionsController อยู่ในรูปแบบ 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
" - ไฟล์ PermissionsController จาก
packages/apps/PermissionController
OEM สามารถใช้คำสั่งตัวอย่างเพื่อช่วยย้ายแพตช์ จากไดเรกทอรีโปรเจ็กต์เดิมไปยังไดเรกทอรีโปรเจ็กต์ใหม่
ย้ายแพตช์จากเฟรมเวิร์ก/ฐาน/apex/สิทธิ์
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
ย้ายแพตช์จากแพ็กเกจ/แอป/PermissionsController
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)