Pengontrol Izin

Modul PermissionController Mainline berisi kebijakan privasi dan UI yang terkait dengan pemberian dan pengelolaan izin (misalnya, kebijakan dan UI untuk pemberian dan pengelolaan izin).

Tentang PermissionController

Modul PermissionController menangani UI, logika, dan peran terkait izin untuk mengizinkan akses bagi aplikasi untuk tujuan tertentu. Ini mengontrol hal-hal berikut:

  • Pemberian izin runtime (termasuk pemberian ke aplikasi sistem)
  • Manajemen izin runtime (termasuk pengelompokan izin)
  • Pelacakan penggunaan izin runtime
  • Peran

Mulai Android 12, framework dan class server sistem untuk Role dipindahkan ke dalam modul untuk menjadikan Role sepenuhnya modular.

Di Android 10, aplikasi Penginstal Paket dibagi menjadi beberapa bagian untuk memungkinkan logika izin diperbarui. Sebagai modul Mainline yang dapat diperbarui, PermissionController:

  • Berinteraksi dengan kerangka kerja hanya melalui @SystemApi yang stabil (tidak ada penggunaan @hide API).
  • Menangani maksud terkait izin dengan prioritas > 0.
  • Mengungkapkan mekanisme yang memungkinkan OEM menyesuaikan tema.
  • Menyediakan layanan yang dapat diikat oleh sistem dan aplikasi, termasuk manajemen peran, pencabutan izin, dan informasi izin dasar (untuk Pengaturan).
  • Mendukung pencabutan otomatis untuk aplikasi yang tidak digunakan (baru di Android 11).

Di Android9, kontrol izin adalah bagian dari com.android.packageinstaller .

Pencabutan otomatis untuk aplikasi yang tidak digunakan

Di Android 11, modul PermissionsController dapat secara otomatis mencabut izin runtime untuk aplikasi yang tidak digunakan dalam jangka waktu lama. Aplikasi yang menargetkan SDK 30 atau lebih tinggi memiliki pencabutan otomatis yang diaktifkan secara default, sedangkan aplikasi yang menargetkan SDK 29 atau lebih rendah memiliki pencabutan otomatis yang dinonaktifkan secara default. Jika diaktifkan, pencabutan otomatis akan memengaruhi semua izin waktu proses, namun mengecualikan semua izin yang telah diberikan sebelumnya, termasuk izin yang ditetapkan oleh kebijakan dan sistem serta izin yang diberikan secara default atau berdasarkan peran. Untuk mengetahui detailnya, lihat Menyetel ulang izin secara otomatis dari aplikasi yang tidak digunakan .

Format paket

Format modul PermissionController berbeda antar rilis.

  • Di Android 11 atau lebih tinggi, modul PermissionController dalam format APEX dan dapat diupdate. Nama paketnya adalah com.google.android.permission .

  • Di Android 10, modul PermissionController berformat APK dan tidak dapat diupdate. Nama paketnya adalah com.google.android.permissioncontroller .

Batas modul

Di Android 12, kode modul Izin dipindahkan dari packages/apps/PermissionController (proyek platform/packages/apps/PackageInstaller ) dan frameworks/base/apex/permission (ini adalah subdirektori dari proyek frameworks/base ).

Struktur proyek baru untuk packages/modules/Permission adalah sebagai berikut:

  • File dari frameworks/base/apex/permission
  • File PermissionController dari packages/apps/PermissionController

OEM dapat menggunakan perintah sampel untuk membantu memindahkan patch mereka dari direktori proyek asli ke direktori proyek baru.

Pindahkan patch dari frameworks/base/apex/permission

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

Pindahkan patch dari paket/apps/PermissionController

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

Kustomisasi

OEM dapat menyesuaikan tema UI izin (warna, margin, font, dan sumber daya dapat digambar) menggunakan runtime resource overlay (RROS) .