PermissionController ana hat 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ü, uygulamaların belirli bir amaç için erişmesine izin vermek üzere izinle ilgili kullanıcı arayüzünü, mantığı ve rolleri yönetir. Aşağıdakileri kontrol eder:
- Çalışma zamanında izin verme (sistem uygulamalarına izin verme dahil)
- Çalışma zamanında istenen izin yönetimi (izinlerin gruplandırılması dahil)
- Çalışma zamanında istenen izin kullanımı izleme
- Roller
Android 12'den itibaren Role
için çerçeve ve sistem sunucusu sınıfları, Role
'u tamamen modüler hale getirmek amacıyla modüle taşınır.
Android 10'da Paket Yükleyici uygulaması, izin 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 üzerinden etkileşim kurar (@hide API kullanımı yoktur).
- Önceliği 0'dan büyük olan izinle ilgili intent'leri işler.
- OEM'lerin temaları özelleştirmesini sağlayan bir mekanizma sağlar.
- 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 iptal özelliğini destekler (Android 11'de yeni).
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ü, uzun süredir kullanılmayan uygulamaların çalışma zamanı izinlerini otomatik olarak iptal 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. Otomatik iptal etkinleştirildiğinde 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 verilmiş 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
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 izin modülü kodu packages/apps/PermissionController
(platform/packages/apps/PackageInstaller
projesi) ve frameworks/base/apex/permission
(frameworks/base
projesinin alt dizini) klasörlerinden taşınır.
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, örnek komutları kullanarak yamalarını orijinal proje dizinlerinden yeni proje dizine taşıyabilir.
Bir yamayı frameworks/base/apex/permission'den 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, çalışma zamanı kaynak yer paylaşımlarını (RROS) kullanarak izinler kullanıcı arayüzü temasını (renkler, kenar boşlukları, yazı tipleri ve çizilebilir öğeler) özelleştirebilir.