המודול הראשי של PermissionsController כולל את מדיניות הפרטיות ואת ממשק המשתמש שקשור להקצאה ולניהול של הרשאות (למשל, המדיניות וממשק המשתמש להענקה ולניהול של הרשאות).
מידע על PermissionsController
המודול PermissionController מטפל בממשק המשתמש, בלוגיקה ובתפקידים שקשורים להרשאות, כדי לאפשר לאפליקציות גישה למטרה ספציפית. הוא קובע את הדברים הבאים:
- הענקת הרשאות בזמן ריצה (כולל הענקה לאפליקציות מערכת)
- ניהול הרשאות בזמן ריצה (כולל קיבוץ הרשאות)
- מעקב אחר השימוש בהרשאות בזמן ריצה
- תפקידים
החל מ-Android 12, המערכת והכיתות של שרת המערכת של Role
מועברות למודול כדי להפוך את Role
למודולרי לחלוטין.
ב-Android 10, אפליקציית Installer Package מחולקת למקטעים כדי לאפשר עדכון של לוגיקת ההרשאות. כמודול ראשי שניתן לעדכון, PermissionController:
- אינטראקציה עם ה-framework רק באמצעות גרסה יציבה של @SystemApi (ללא שימוש ב- @הסתרה של API).
- טיפול בכוונות שקשורות להרשאות עם עדיפות גבוהה מ-0.
- מנגנון שמאפשר ליצרני ציוד מקורי להתאים אישית את העיצוב.
- שירותים שאפשר לקשר אליהם את המערכת ואת האפליקציות, כולל ניהול תפקידים, ביטול הרשאות ומידע בסיסי על הרשאות (להגדרות).
- תמיכה בביטול אוטומטי של הרשאות לאפליקציות שלא בשימוש (חדש ב-Android 11).
ב-Android9, בקרת ההרשאות היא חלק מ-com.android.packageinstaller
.
ביטול אוטומטי של הרשאות לאפליקציות שלא בשימוש
ב-Android 11, המודול PermissionsController יכול לבטל אוטומטית הרשאות בזמן הריצה לאפליקציות שלא השתמשו בהן במשך פרק זמן ארוך. באפליקציות שמטרגטות SDK מגרסה 30 ואילך, ביטול ההרשאה האוטומטי מופעל כברירת מחדל. באפליקציות שמטרגטות SDK מגרסה 29 ומטה, ביטול ההרשאה האוטומטי מושבת כברירת מחדל. כשהאפשרות הזו מופעלת, הביטול האוטומטי משפיע על כל ההרשאות בסביבת זמן הריצה, אבל פטור מכל ההרשאות שניתנו מראש, כולל הרשאות והרשאות שהוגדרו כברירת מחדל או לפי תפקיד, כולל הרשאות והרשאות שנקבעו מראש במדיניות ובמערכת. פרטים נוספים זמינים במאמר איפוס אוטומטי של הרשאות מאפליקציות שלא בשימוש.
פורמט החבילה
הפורמט של המודול PermissionController משתנה בין גרסאות.
ב-Android מגרסה 11 ואילך, המודול PermissionsController הוא בפורמט 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
יצרני ציוד מקורי יכולים להשתמש בפקודות לדוגמה כדי להעביר את התיקונים שלהם מהספריות המקוריות של הפרויקטים לספריית הפרויקט החדשה.
העברת תיקון מ-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
התאמה אישית
יצרני ציוד מקורי יכולים להתאים אישית את העיצוב של ממשק המשתמש של ההרשאות (צבעים, שוליים, גופנים ורכיבי גרפיקה שניתן לצייר) באמצעות שכבות-על של משאבים בסביבת זמן ריצה (RROS).