PermissionController

ماژول 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) سفارشی کنند.