PermissionController

تتيح الوحدة النمطية PermissionController سياسات الخصوصية القابلة للتحديث وعناصر واجهة المستخدم (على سبيل المثال ، السياسات وواجهة المستخدم حول منح الأذونات وإدارتها).

بدءًا من Android 12 ، يتم نقل فئات إطار العمل وخادم النظام لـ Role إلى الوحدة النمطية لجعل Role معياريًا بالكامل.

حول PermissionController

يتعامل ملف APK com.google.android.permissioncontroller APK مع واجهة المستخدم والمنطق والأدوار المتعلقة بالإذن للسماح بالوصول إلى التطبيقات لغرض معين. يتحكم في ما يلي:

  • منح إذن وقت التشغيل (بما في ذلك منح تطبيقات النظام)

  • إدارة أذونات وقت التشغيل (بما في ذلك تجميع الأذونات)

  • تتبع استخدام إذن وقت التشغيل

  • الأدوار

في Android 9 ، كانت هذه الأذونات جزءًا من com.google.android.packageinstaller . في Android 10 ، يتم تقسيم تطبيق Package Installer إلى أقسام لتمكين تحديث منطق الأذونات. كوحدة نمطية رئيسية قابلة للتحديث ، PermissionController:

  • يتفاعل مع إطار العمل فقط من خلال @SystemApi (بدون استخدام @hide API).

  • يتعامل مع النوايا المتعلقة بالإذن بأولوية أعلى من 0.

  • يعرض آلية لتمكين مصنعي المعدات الأصلية من تخصيص السمات.

  • يوفر الخدمات التي يمكن للنظام والتطبيقات الارتباط بها ، بما في ذلك إدارة الدور وإلغاء الأذونات ومعلومات الأذونات الأساسية (للإعدادات).

  • يدعم الإلغاء التلقائي للتطبيقات غير المستخدمة (الجديد في Android 11).

الإلغاء التلقائي للتطبيقات غير المستخدمة

في Android 11 ، يمكن لوحدة التحكم في الأذونات أن تلغي تلقائيًا أذونات وقت التشغيل للتطبيقات التي لم يتم استخدامها لفترة طويلة من الوقت. يتم تمكين الإلغاء التلقائي للتطبيقات التي تستهدف SDK 30 أو أعلى بشكل افتراضي ، بينما يتم تعطيل الإلغاء التلقائي للتطبيقات التي تستهدف SDK 29 أو أقل بشكل افتراضي. عند التمكين ، يؤثر الإلغاء التلقائي على جميع أذونات وقت التشغيل ولكنه يستثني جميع الأذونات الممنوحة مسبقًا ، بما في ذلك الأذونات والأذونات التي تم منحها بشكل افتراضي أو حسب الدور. للحصول على التفاصيل ، راجع أذونات إعادة التعيين التلقائي من التطبيقات غير المستخدمة .

تنسيق الحزمة

يتم تسليم وحدة PermissionController كملف APK.

حدود الوحدة

في 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

يمكن لمصنعي المعدات الأصلية استخدام نماذج الأوامر للمساعدة في نقل تصحيحاتهم من أدلة المشروع الأصلية إلى دليل المشروع الجديد.

انقل رقعة من أطر عمل / قاعدة / قمة / إذن

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

التخصيص

يمكن لمصنعي المعدات الأصلية تخصيص سمة واجهة مستخدم الأذونات (الألوان والهوامش والخطوط والعناصر القابلة للرسم) باستخدام تراكبات موارد وقت التشغيل (RROS) .