PermissionController

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

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

เกี่ยวกับ PermissionController

com.google.android.permissioncontroller APK จัดการ UI ตรรกะ และบทบาทที่เกี่ยวข้องกับการอนุญาต เพื่ออนุญาตให้เข้าถึงแอปเพื่อวัตถุประสงค์เฉพาะ มันควบคุมสิ่งต่อไปนี้:

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

  • การจัดการสิทธิ์รันไทม์ (รวมถึงการจัดกลุ่มสิทธิ์)

  • การติดตามการใช้สิทธิ์รันไทม์

  • บทบาท

ใน Android 9 การอนุญาตดังกล่าวเป็นส่วนหนึ่งของ com.google.android.packageinstaller ใน Android 10 แอป Package Installer จะถูกแบ่งออกเป็นส่วนต่างๆ เพื่อเปิดใช้งานลอจิกการอนุญาตที่จะอัปเดต ในฐานะที่เป็นโมดูล Mainline ที่อัปเดตได้ PermissionController:

  • โต้ตอบกับเฟรมเวิร์กผ่าน @SystemApi ที่เสถียรเท่านั้น (ไม่มีการใช้ @hide API)

  • จัดการความตั้งใจที่เกี่ยวข้องกับการอนุญาตที่มีลำดับความสำคัญสูงกว่า 0

  • เปิดเผยกลไกในการทำให้ OEM ปรับแต่งชุดรูปแบบได้

  • ให้บริการที่ระบบและแอปสามารถผูกมัดได้ รวมถึงการจัดการบทบาท การเพิกถอนสิทธิ์ และข้อมูลการอนุญาตพื้นฐาน (สำหรับการตั้งค่า)

  • รองรับการเพิกถอนอัตโนมัติสำหรับแอพที่ไม่ได้ใช้ (ใหม่ใน Android 11)

เพิกถอนอัตโนมัติสำหรับแอพที่ไม่ได้ใช้

ใน Android 11 โมดูล PermissionsController สามารถเพิกถอนการอนุญาตรันไทม์โดยอัตโนมัติสำหรับแอปที่ไม่ได้ใช้เป็นระยะเวลานาน แอปที่กำหนดเป้าหมายเป็น SDK 30 ขึ้นไปจะเปิดใช้การเพิกถอน อัตโนมัติ โดยค่าเริ่มต้น ในขณะที่แอปที่กำหนดเป้าหมายเป็น SDK 29 หรือต่ำกว่าจะ ปิดใช้ การเพิกถอนอัตโนมัติโดยค่าเริ่มต้น เมื่อเปิดใช้งาน การเพิกถอนอัตโนมัติจะส่งผลต่อการอนุญาตรันไทม์ทั้งหมด แต่จะยกเว้นการอนุญาตที่ได้รับล่วงหน้าทั้งหมด รวมถึงการอนุญาตแบบกำหนดนโยบายและระบบ และสิทธิ์ที่ได้รับตามค่าเริ่มต้นหรือตามบทบาท สำหรับรายละเอียด โปรดดูการ รีเซ็ตการอนุญาตอัตโนมัติจากแอพที่ไม่ได้ใช้

รูปแบบแพ็คเกจ

โมดูล PermissionController จัดส่งเป็นไฟล์ APK

ขอบเขตโมดูล

ใน Android 12 โค้ดโมดูล Permission จะถูกย้ายจาก packages/apps/PermissionController (the platform/packages/apps/PackageInstaller project) และ 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

ย้ายโปรแกรมแก้ไขจากแพ็คเกจ/แอพ/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)