PermissionController

PermissionController Ana Hat modülü, gizlilik ilkelerini ve izinlerin verilmesi ve yönetilmesiyle ilgili kullanıcı arabirimini (örneğin, izinlerin verilmesi ve yönetilmesi için ilkeler ve kullanıcı arabirimi) içerir.

PermissionController Hakkında

PermissionController modülü, belirli bir amaç için uygulamalara erişime izin vermek için izinle ilgili UI, mantık ve rolleri işler. Aşağıdakileri kontrol eder:

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

Android 12'den başlayarak, Role Role modüler hale getirmek için modüle taşınır.

Android 10'da Paket Yükleyici uygulaması, izinler mantığının güncellenmesini sağlamak için bölümlere ayrılmıştır. Güncellenebilir bir Ana Hat modülü olarak PermissionController:

  • Çerçeveyle yalnızca kararlı @SystemApi aracılığıyla etkileşime girer (@hide API kullanımı yok).
  • Öncelik > 0 olan izinle ilgili amaçları işler.
  • OEM'lerin temayı özelleştirmesine olanak tanıyan bir mekanizma sunar.
  • Rol yönetimi, izin iptali ve temel izin bilgileri (Ayarlar için) dahil olmak üzere sistem ve uygulamaların bağlanabileceği hizmetler sağlar.
  • Kullanılmayan uygulamalar için otomatik iptali destekler (Android 11'de yeni).

Android9'da izin denetimi com.google.android.packageinstaller öğesinin bir parçasıdır.

Kullanılmayan uygulamalar için otomatik iptal

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 üstünü hedefleyen uygulamalarda otomatik iptal varsayılan olarak etkinken , SDK 29 veya daha düşük sürümlerini hedefleyen uygulamalarda otomatik iptal varsayılan olarak devre dışıdır. Etkinleştirildiğinde, otomatik iptal tüm çalışma zamanı izinlerini etkiler ancak ilke ve sistem tarafından sabitlenmiş izinler ve varsayılan veya rol tarafından verilen izinler dahil olmak üzere önceden verilmiş tüm izinleri muaf tutar. Ayrıntılar için , Kullanılmayan uygulamalardan izinleri otomatik sıfırlama konusuna bakın.

Paket formatı

PermissionController modülünün formatı 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 İzin modülü kodu, packages/apps/PermissionController ( platform/packages/apps/PackageInstaller projesi) ve frameworks/base/apex/permission (bu, frameworks/base projenin bir alt dizinidir) taşınır.

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

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

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

Bir yamayı çerçeveler/taban/apek/izin alanından taşıyın

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

Paketlerden/uygulamalardan/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, çalışma zamanı kaynak kaplamalarını (RROS) kullanarak izinler UI temasını (renkler, kenar boşlukları, yazı tipleri ve çizilebilirler) özelleştirebilir.