İzin Denetleyicisi

ConsentController Mainline modülü, gizlilik politikalarının yanı sıra izin verme ve yönetmeyle ilgili kullanıcı arayüzünü (örneğin, izinleri vermek ve yönetmek için kullanılan politikalar ve kullanıcı arayüzü) içerir.

PermissionController hakkında

AllowedController modülü, uygulamalara belirli bir amaç için erişim sağlamak amacıyla izinle ilgili kullanıcı arayüzünü, mantığı ve rolleri işler. Aşağıdakileri kontrol eder:

  • Çalışma zamanı izni verme (sistem uygulamalarına izin verme dahil)
  • Çalışma zamanı izni yönetimi (izinlerin gruplandırılması dahil)
  • Çalışma zamanı izni kullanım takibi
  • 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, izin mantığının güncellenmesini sağlamak için Paket Yükleyici uygulaması bölümlere ayrılmıştır. Güncellenebilir bir Mainline modülü olan 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 ile varsayılan olarak veya role göre verilen izinler de dahil olmak üzere önceden verilmiş tüm izinler muaf tutulur. Ayrıntılar için Kullanılmayan uygulamaların izinlerini otomatik sıfırlama bölümünü 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ı (RROS) kullanarak izinler kullanıcı arayüzü temasını (renkler, kenar boşlukları, yazı tipleri ve çekilebilir öğeler) özelleştirebilir.