PermissionController

ماژول PermissionController Mainline شامل سیاست‌های حفظ حریم خصوصی و رابط کاربری مربوط به اعطای و مدیریت مجوزها (به عنوان مثال، سیاست‌ها و رابط کاربری برای اعطای و مدیریت مجوزها) است.

درباره کنترل‌کننده مجوز

ماژول PermissionController رابط کاربری، منطق و نقش‌های مربوط به مجوزها را مدیریت می‌کند تا به برنامه‌ها برای اهداف خاص دسترسی بدهد. این ماژول موارد زیر را کنترل می‌کند:

  • اعطای مجوز در زمان اجرا (از جمله اعطای مجوز به برنامه‌های سیستمی)
  • مدیریت مجوزهای زمان اجرا (شامل گروه‌بندی مجوزها)
  • ردیابی استفاده از مجوزهای زمان اجرا
  • نقش‌ها

با شروع از اندروید ۱۲، کلاس‌های چارچوب و سرور سیستم برای Role به ماژول منتقل شدند تا Role کاملاً ماژولار شود.

در اندروید ۱۰، برنامه‌ی نصب‌کننده‌ی بسته به بخش‌هایی تقسیم شده است تا منطق مجوزها قابل به‌روزرسانی باشد. PermissionController به عنوان یک ماژول Mainline قابل به‌روزرسانی:

  • فقط از طریق @SystemApi پایدار با فریم‌ورک تعامل دارد (از API @hide استفاده نمی‌کند).
  • اینتنت‌های مربوط به مجوز را با اولویت > 0 مدیریت می‌کند.
  • مکانیزمی را برای فعال کردن OEMها جهت سفارشی‌سازی قالب‌بندی ارائه می‌دهد.
  • سرویس‌هایی را ارائه می‌دهد که سیستم و برنامه‌ها می‌توانند به آنها متصل شوند، از جمله مدیریت نقش، لغو مجوز و اطلاعات اولیه مجوز (برای تنظیمات).
  • پشتیبانی از لغو خودکار برای برنامه‌های بلااستفاده (قابلیت جدید در اندروید ۱۱).

در اندروید ۹، کنترل مجوزها بخشی از com.android.packageinstaller است.

لغو خودکار برای برنامه‌های بلااستفاده

در اندروید ۱۱، ماژول PermissionsController می‌تواند به‌طور خودکار مجوزهای زمان اجرا را برای برنامه‌هایی که برای مدت طولانی استفاده نشده‌اند، لغو کند. برنامه‌هایی که SDK 30 یا بالاتر را هدف قرار می‌دهند، به‌طور پیش‌فرض لغو خودکار را فعال کرده‌اند ، در حالی که برنامه‌هایی که SDK 29 یا پایین‌تر را هدف قرار می‌دهند، به‌طور پیش‌فرض لغو خودکار را غیرفعال کرده‌اند . وقتی فعال باشد، لغو خودکار بر همه مجوزهای زمان اجرا تأثیر می‌گذارد اما همه مجوزهای از پیش اعطا شده، از جمله مجوزهای ثابت شده توسط سیاست و سیستم و مجوزهای اعطا شده به‌طور پیش‌فرض یا توسط نقش را معاف می‌کند. برای جزئیات بیشتر، به «بازنشانی خودکار مجوزها از برنامه‌های استفاده نشده» مراجعه کنید.

قالب بسته

قالب ماژول PermissionController بین نسخه‌های مختلف متفاوت است.

  • در اندروید ۱۱ یا بالاتر، ماژول PermissionController با فرمت APEX است و قابل به‌روزرسانی است. نام بسته com.google.android.permission است.

  • در اندروید ۱۰، ماژول PermissionController با فرمت APK است و قابل به‌روزرسانی نیست. نام بسته com.google.android.permissioncontroller است.

مرز ماژول

در اندروید ۱۲، کد ماژول Permission از 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) می‌توانند از دستورات نمونه برای انتقال پچ‌های خود از دایرکتوری‌های پروژه اصلی به دایرکتوری پروژه جدید استفاده کنند.

یک پچ را از 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

سفارشی‌سازی

تولیدکنندگان اصلی تجهیزات (OEM) می‌توانند تم رابط کاربری مربوط به مجوزها (رنگ‌ها، حاشیه‌ها، فونت‌ها و فایل‌های قابل ترسیم) را با استفاده از پوشش‌های منابع زمان اجرا (RROS) سفارشی کنند.