ماژول PermissionController خطمشیهای حریم خصوصی و عناصر رابط کاربری قابل بهروزرسانی را فعال میکند (به عنوان مثال، خطمشیها و رابط کاربری پیرامون اعطای و مدیریت مجوزها).
با شروع اندروید 12، کلاسهای فریمورک و سرور سیستم برای Role
به ماژول منتقل میشوند تا Role
کاملاً ماژولار شود.
درباره PermissionController
com.google.android.permissioncontroller
APK رابط کاربری، منطق و نقشهای مرتبط با مجوز را کنترل میکند تا امکان دسترسی به برنامهها برای اهداف خاص را فراهم کند. موارد زیر را کنترل می کند:
اعطای مجوز زمان اجرا (از جمله اعطای مجوز به برنامه های سیستم)
مدیریت مجوز زمان اجرا (از جمله گروه بندی مجوزها)
ردیابی استفاده از مجوز زمان اجرا
نقش ها
در Android 9، چنین مجوزهایی بخشی از com.google.android.packageinstaller
بودند. در اندروید 10، برنامه Package Installer به بخشهایی تقسیم میشود تا منطق مجوزها را بهروزرسانی کند. به عنوان یک ماژول Mainline قابل به روز رسانی، PermissionController:
فقط از طریق
@SystemApi
پایدار (بدون استفاده از@hide
API) با چارچوب تعامل دارد.اهداف مرتبط با مجوز را با اولویت بالای 0 مدیریت می کند.
مکانیزمی را برای فعال کردن OEMها برای سفارشی کردن موضوع نمایش می دهد.
خدماتی را ارائه میکند که سیستم و برنامهها میتوانند به آنها متصل شوند، از جمله مدیریت نقش، لغو مجوز، و اطلاعات مجوز اولیه (برای تنظیمات).
پشتیبانی از لغو خودکار برای برنامه های استفاده نشده (جدید در اندروید 11).
لغو خودکار برای برنامه های استفاده نشده
در اندروید 11، ماژول PermissionsController می تواند به طور خودکار مجوزهای زمان اجرا را برای برنامه هایی که برای مدت زمان طولانی استفاده نشده اند لغو کند. برنامههایی که SDK 30 یا بالاتر را هدف قرار میدهند، به طور پیشفرض لغو خودکار فعال هستند، در حالی که برنامههایی که SDK 29 یا پایینتر را هدف قرار میدهند، به طور پیشفرض لغو خودکار غیرفعال میشوند. هنگامی که فعال باشد، لغو خودکار بر تمام مجوزهای زمان اجرا تأثیر می گذارد، اما همه مجوزهای از قبل اعطا شده، از جمله مجوزهای ثابت شده توسط خط مشی و سیستم و مجوزهایی که به طور پیش فرض یا توسط نقش اعطا شده اند، مستثنی می شوند. برای جزئیات، به بازنشانی خودکار مجوزها از برنامه های استفاده نشده مراجعه کنید.
قالب بسته
ماژول PermissionController به عنوان یک فایل APK تحویل داده می شود.
مرز ماژول
در اندروید 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 ها می توانند از دستورات نمونه برای کمک به انتقال وصله های خود از دایرکتوری های پروژه اصلی به دایرکتوری پروژه جدید استفاده کنند.
یک وصله را از فریمورک/پایه/اپکس/مجوز منتقل کنید
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) سفارشی کنند.