از 27 مارس 2025، توصیه می کنیم از android-latest-release به جای aosp-main برای ساختن و کمک به AOSP استفاده کنید. برای اطلاعات بیشتر، به تغییرات AOSP مراجعه کنید.
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
ماژول PermissionController Mainline شامل خطمشیهای حفظ حریم خصوصی و رابط کاربری مربوط به اعطای و مدیریت مجوزها است (به عنوان مثال، خطمشیها و رابط کاربری برای اعطای و مدیریت مجوزها).
درباره PermissionController
ماژول PermissionController رابط کاربری، منطق و نقشهای مرتبط با مجوز را کنترل میکند تا امکان دسترسی به برنامهها برای اهداف خاص را فراهم کند. موارد زیر را کنترل می کند:
اعطای مجوز زمان اجرا (از جمله اعطای مجوز به برنامه های سیستم)
مدیریت مجوز زمان اجرا (از جمله گروه بندی مجوزها)
ردیابی استفاده از مجوز زمان اجرا
نقش ها
با شروع اندروید 12، کلاسهای فریمورک و سرور سیستم برای Role به ماژول منتقل میشوند تا Role کاملاً ماژولار شود.
در اندروید 10، برنامه Package Installer به بخشهایی تقسیم میشود تا منطق مجوزها را بهروزرسانی کند. به عنوان یک ماژول Mainline قابل به روز رسانی، PermissionController:
فقط از طریق @SystemApi (بدون استفاده از @hide API) با چارچوب تعامل دارد.
اهداف مرتبط با مجوز را با اولویت > 0 مدیریت می کند.
مکانیزمی را برای فعال کردن OEMها برای سفارشی کردن موضوع نمایش می دهد.
خدماتی را ارائه می دهد که سیستم و برنامه ها می توانند به آنها متصل شوند، از جمله مدیریت نقش، لغو مجوز، و اطلاعات مجوز اولیه (برای تنظیمات).
پشتیبانی از لغو خودکار برای برنامه های استفاده نشده (جدید در اندروید 11).
در Android9، کنترل مجوز بخشی از com.android.packageinstaller است.
لغو خودکار برای برنامه های استفاده نشده
در اندروید 11، ماژول PermissionsController می تواند به طور خودکار مجوزهای زمان اجرا را برای برنامه هایی که برای مدت زمان طولانی استفاده نشده اند لغو کند. برنامههایی که SDK 30 یا بالاتر را هدف قرار میدهند، به طور پیشفرض لغو خودکار فعال هستند، در حالی که برنامههایی که SDK 29 یا پایینتر را هدف قرار میدهند، به طور پیشفرض لغو خودکار غیرفعال میشوند. هنگامی که فعال باشد، لغو خودکار بر تمام مجوزهای زمان اجرا تأثیر می گذارد، اما همه مجوزهای از قبل اعطا شده، از جمله مجوزهای ثابت شده توسط خط مشی و سیستم و مجوزهایی که به طور پیش فرض یا با نقش اعطا شده اند، معاف می شود. برای جزئیات، به بازنشانی خودکار مجوزهای برنامههای استفاده نشده مراجعه کنید.
قالب بسته
قالب ماژول PermissionController بین نسخه ها متفاوت است.
در اندروید 11 یا بالاتر، ماژول PermissionController با فرمت APEX است و قابل به روز رسانی است. نام بسته com.google.android.permission است.
در اندروید 10، ماژول PermissionController با فرمت APK است و قابل به روز رسانی نیست. نام بسته com.google.android.permissioncontroller است.
مرز ماژول
در اندروید 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 ها می توانند از دستورات نمونه برای کمک به انتقال وصله های خود از دایرکتوری های پروژه اصلی به دایرکتوری پروژه جدید استفاده کنند.
OEM ها می توانند با استفاده از همپوشانی منابع زمان اجرا (RROS) تم UI مجوزها (رنگ ها، حاشیه ها، فونت ها و طرح های ترسیمی) را سفارشی کنند.
محتوا و نمونه کدها در این صفحه مشمول پروانههای توصیفشده در پروانه محتوا هستند. جاوا و OpenJDK علامتهای تجاری یا علامتهای تجاری ثبتشده Oracle و/یا وابستههای آن هستند.
تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی.
[[["درک آسان","easyToUnderstand","thumb-up"],["مشکلم را برطرف کرد","solvedMyProblem","thumb-up"],["غیره","otherUp","thumb-up"]],[["اطلاعاتی که نیاز دارم وجود ندارد","missingTheInformationINeed","thumb-down"],["بیشازحد پیچیده/ مراحل بسیار زیاد","tooComplicatedTooManySteps","thumb-down"],["قدیمی","outOfDate","thumb-down"],["مشکل ترجمه","translationIssue","thumb-down"],["مشکل کد / نمونهها","samplesCodeIssue","thumb-down"],["غیره","otherDown","thumb-down"]],["تاریخ آخرین بهروزرسانی 2025-07-29 بهوقت ساعت هماهنگ جهانی."],[],[],null,["# PermissionController\n\nThe PermissionController Mainline module contains privacy policies and the\nUI related to granting and managing permissions (for example, the policies and\nUI for granting and managing permissions).\n\nAbout PermissionController\n--------------------------\n\nThe PermissionController module handles permission-related UI, logic, and roles\nto allow access for apps for specific purpose. It controls the following:\n\n- Runtime permission granting (including granting to system apps)\n- Runtime permission management (including grouping of permissions)\n- Runtime permission usage tracking\n- Roles\n\nStarting in Android 12, the framework and system server\nclasses for [`Role`](https://developer.android.com/reference/kotlin/androidx/compose/ui/semantics/Role)\nare moved into the module to make `Role` completely modular.\n\nIn Android 10, the Package Installer app\nis split into sections to enable the permissions logic to be updated. As an\nupdatable Mainline module, PermissionController:\n\n- Interacts with the framework only via stable @SystemApi (no @hide API usage).\n- Handles permission-related intents with priority \\\u003e 0.\n- Exposes a mechanism for enabling OEMs to customize theming.\n- Provides services to which the system and applications can bind, including role management, permission revocation, and basic permission information (for Settings).\n- Supports auto-revoke for unused apps (new in Android 11).\n\nIn Android9, permission control is part of\n`com.android.packageinstaller`.\n\nAuto-revoke for unused apps\n---------------------------\n\nIn Android 11, the PermissionsController module can\nautomatically revoke runtime permissions for apps that haven't been used for an\nextended period of time. Apps targeting SDK 30 or higher have auto-revoke\n**enabled** by default, while apps targeting SDK 29 or lower have auto-revoke\n**disabled** by default. When enabled, auto-revoke affects all runtime\npermissions but exempts all pre-granted permissions, including policy- and\nsystem-fixed permissions and permissions granted by default or by role. For\ndetails, refer to [Auto-reset permissions from unused\napps](https://developer.android.com/about/versions/11/privacy/permissions#auto-reset).\n\nPackage format\n--------------\n\nThe format of the PermissionController module differs between releases.\n\n- In Android 11 or higher, the PermissionController module is in\n [APEX](/docs/core/ota/apex) format\n and is updatable. The package name is `com.google.android.permission`.\n\n- In Android 10, the PermissionController module is in APK format and isn't\n updatable. The package name is `com.google.android.permissioncontroller`.\n\nModule boundary\n---------------\n\nIn Android 12, the Permission\nmodule code is moved from `packages/apps/PermissionController`\n(the `platform/packages/apps/PackageInstaller` project) and\n`frameworks/base/apex/permission` (this is a subdirectory of the\n`frameworks/base` project).\n\nThe new project structure for `packages/modules/Permission` is as follows:\n\n- Files from `frameworks/base/apex/permission`\n- PermissionController files from `packages/apps/PermissionController`\n\nOEMs can use the sample commands to help move their patches\nfrom the original project directories to the new project directory.\n| **Note:** These commands are just a reference. OEMs can use different ways to move the patch.\n\n### Move a patch from frameworks/base/apex/permission\n\n root/frameworks/base/$ git format-patch -1 --relative=apex/permission \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003ecommit\u003c/span\u003e\u003c/var\u003e --stdout \u003e \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003epatch\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003efile\u003c/span\u003e\u003cspan class=\"devsite-syntax-p\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003etxt\u003c/span\u003e\u003c/var\u003e\n\n root/packages/modules/Permission$ git am -p2 \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003epatch\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003efile\u003c/span\u003e\u003cspan class=\"devsite-syntax-p\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003etxt\u003c/span\u003e\u003c/var\u003e\n\n### Move a patch from packages/apps/PermissionController\n\n root/packages/apps/PermissionController$ git format-patch -1 \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003ecommit\u003c/span\u003e\u003c/var\u003e --stdout \u003e \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003epatch\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003efile\u003c/span\u003e\u003cspan class=\"devsite-syntax-p\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003etxt\u003c/span\u003e\u003c/var\u003e\n\n root/packages/modules/Permission$ git am -p2 --directory=PermissionController \u003cvar translate=\"no\"\u003e\u003cspan class=\"devsite-syntax-nx\"\u003epatch\u003c/span\u003e\u003cspan class=\"devsite-syntax-o\"\u003e-\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003efile\u003c/span\u003e\u003cspan class=\"devsite-syntax-p\"\u003e.\u003c/span\u003e\u003cspan class=\"devsite-syntax-nx\"\u003etxt\u003c/span\u003e\u003c/var\u003e\n\nCustomization\n-------------\n\nOEMs can customize the permissions UI theme (colors, margins, fonts, and\ndrawables) using [runtime resource overlays\n(RROS)](/docs/core/architecture/rros)."]]