PermissionController

PermissionController Mainline modülü, izin verme ve yönetmeyle ilgili gizlilik politikalarını ve kullanıcı arayüzünü (ör. izin verme ve yönetmeyle ilgili politikalar ve kullanıcı arayüzü) içerir.

PermissionController hakkında

PermissionController modülü, belirli amaçlar için uygulamalara erişim izni vermek üzere izinle ilgili kullanıcı arayüzünü, mantığı ve rolleri işler. Aşağıdakileri kontrol eder:

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

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

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

  • Yalnızca kararlı @SystemApi aracılığıyla çerçeveyle etkileşime girer (@hide API kullanımı yok).
  • İzinle ilgili amaçları öncelik > 0 ile işler.
  • OEM'lerin temaları özelleştirmesine olanak tanıyan bir mekanizma sunar.
  • Sistem ve uygulamaların bağlanabileceği hizmetler sağlar. Bu hizmetler arasında rol yönetimi, izin iptali ve temel izin bilgileri (Ayarlar için) yer alır.
  • Kullanılmayan uygulamalar için izinlerin otomatik olarak kaldırılmasını destekler (Android 11'de yeni).

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

Kullanılmayan uygulamalar için izinleri otomatik olarak kaldırma

Android 11'de PermissionsController modülü, uzun süredir kullanılmayan uygulamalar için çalışma zamanı izinlerini otomatik olarak iptal edebilir. SDK 30 veya sonraki sürümleri hedefleyen uygulamalarda otomatik iptal özelliği varsayılan olarak etkinleştirilirken SDK 29 veya önceki sürümleri hedefleyen uygulamalarda otomatik iptal özelliği varsayılan olarak devre dışı bırakılır. Etkinleştirildiğinde otomatik iptal, politika ve sistem tarafından sabitlenmiş izinler ile varsayılan olarak veya role göre verilen izinler dahil olmak üzere önceden verilmiş tüm izinleri muaf tutarak tüm çalışma zamanı izinlerini etkiler. Ayrıntılı bilgi için Kullanılmayan uygulamaların izinlerini otomatik olarak sıfırlama başlıklı makaleyi inceleyin.

Paket biçimi

PermissionController 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üncellenemez. Paket adı com.google.android.permissioncontroller.

Modül sınırı

Android 12'de Permission modül kodu packages/apps/PermissionController (platform/packages/apps/PackageInstaller projesi) ve frameworks/base/apex/permission (frameworks/base projesinin bir alt dizini) konumundan taşındı.

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

  • frameworks/base/apex/permission dosyaları
  • packages/apps/PermissionController cihazındaki PermissionController dosyaları

OEM'ler, yamalarını orijinal proje dizinlerinden yeni proje dizinine taşımalarına yardımcı olması için örnek komutları kullanabilir.

Bir yamayı frameworks/base/apex/permission konumundan 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

Yama dosyasını packages/apps/PermissionController konumundan 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, çalışma zamanı kaynak kaplamalarını (RROS) kullanarak izinler kullanıcı arayüzü temasını (renkler, kenar boşlukları, yazı tipleri ve çizilebilir öğeler) özelleştirebilir.