İzin Denetleyicisi

PermissionController Mainline modülü, gizlilik politikalarını ve İzinlerin verilmesi ve yönetilmesiyle ilgili kullanıcı arayüzü (örneğin, politikalar ve kullanıcı arayüzü) girin.

PermissionController hakkında

AllowedController modülü; izinle ilgili kullanıcı arayüzünü, mantığı ve rolleri işler uygulamalara belirli bir amaca yönelik erişim izni vermek için kullanılır. Aşağıdakileri kontrol eder:

  • Çalışma zamanında izin verme (sistem uygulamalarına izin verme dahil)
  • Çalışma zamanı izin yönetimi (izinlerin gruplandırılması dahil)
  • Çalışma zamanı izni kullanım takibi
  • Roller

Android 12'den itibaren çerçeve ve sistem sunucusu Role sınıfları Role modülü tamamen modüler hale getirmek için modüle taşındı.

Android 10'da, Paket Yükleyici uygulaması , izin mantığının güncellenmesi için bölümlere ayrılmıştır. Güncellenebilir bir ana hat modülü olarak PermissionController:

  • Çerçeveyle yalnızca kararlı @SystemApi üzerinden etkileşim kurar (@hide API kullanımı yoktur).
  • İzinle ilgili amaçları öncelikli olarak ele alır > 0
  • OEM'lerin tema oluşturmayı özelleştirmesini sağlayan bir mekanizma sunar.
  • Rol yönetimi, izin iptal etme ve temel izin bilgileri (Ayarlar için) dahil olmak üzere sistemin ve uygulamaların bağlanabileceği hizmetler sağlar.
  • Kullanılmayan uygulamalar için otomatik iptali destekler (Android'de yenidir) 11).

Android 9'da izin kontrolü com.android.packageinstaller'ın bir parçasıdır.

Kullanılmayan uygulamalar için otomatik olarak iptal etme

Android 11'de PermissionsController modülü, bir süre kullanılmayan uygulamalar için çalışma zamanı izinlerini otomatik olarak iptal eder uzun süre devam edebilir. SDK 30 veya sonraki sürümleri hedefleyen uygulamalarda otomatik iptal özelliği varsayılan olarak etkin, SDK 29 veya önceki sürümleri hedefleyen uygulamalarda ise varsayılan olarak devre dışıdır. Etkinleştirildiğinde otomatik iptal, tüm çalışma zamanı izinlerini etkiler ancak politika ve sistem tarafından sabitlenen izinler ve varsayılan olarak veya role göre verilen izinler dahil olmak üzere önceden verilen tüm izinleri muaf tutar. Ayrıntılar için Kullanılmayan uygulamalardaki izinleri otomatik olarak sıfırlama başlıklı makaleyi inceleyin.

Paket biçimi

ConsentController modülünün biçimi sürümler arasında farklılık gösterir.

  • Android 11 veya sonraki sürümlerde PermissionController modülü APEX biçimindedir ve güncellenebilir. Paket adı com.google.android.permission.

  • Android 10'da PermissionController modülü APK biçimindedir ve güncellenebilir. Paket adı com.google.android.permissioncontroller.

Modül sınırı

Android 12'de izin modül kodu, packages/apps/PermissionController konumundan taşınır (platform/packages/apps/PackageInstaller projesi) ve frameworks/base/apex/permission (bu, frameworks/base projesi).

packages/modules/Permission için yeni proje yapısı aşağıdaki gibidir:

  • frameworks/base/apex/permission dosyaları
  • packages/apps/PermissionController kaynağından PermissionController dosyaları

OEM'ler, yamalarını taşımak için örnek komutları kullanabilir yeni proje dizinine taşıyın.

Çerçevelerden/base/apex/izinlerden yama taşıma

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'dan bir yamayı taşıma

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

Özelleştirme

OEM'ler, izinlerin kullanıcı arayüzü temasını (renkler, kenar boşlukları, yazı tipleri ve çekilebilirler) çalışma zamanı kaynak yer paylaşımlarını kullanarak (RROS) değerleridir.