โมดูล PermissionController Mainline มีนโยบายความเป็นส่วนตัวและ UI ที่เกี่ยวข้องกับการให้และการจัดการสิทธิ์ (เช่น นโยบายและ UI การให้และการจัดการสิทธิ์)
เกี่ยวกับ PermissionController
โมดูล PermissionController จะจัดการ 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 โมดูล 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 สามารถใช้คำสั่งตัวอย่างเพื่อช่วยย้ายแพตช์จากไดเรกทอรีโปรเจ็กต์เดิมไปยังไดเรกทอรีโปรเจ็กต์ใหม่
ย้ายแพตช์จากเฟรมเวิร์ก/ฐาน/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
ย้ายแพตช์จาก 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)