ตัวควบคุมสิทธิ์

โมดูลเมนไลน์ 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)