PermissionController

Modul Mainline PermissionController 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 aplikasi untuk tujuan tertentu. Aplikasi ini mengontrol hal berikut:

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

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

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

  • Berinteraksi dengan framework hanya melalui @SystemApi yang stabil (tidak ada penggunaan API @hide).
  • Menangani intent terkait izin dengan prioritas > 0.
  • Mengekspos mekanisme bagi OEM untuk menyesuaikan tema.
  • Menyediakan layanan yang dapat diikat oleh sistem dan aplikasi, termasuk pengelolaan peran, pencabutan izin, dan informasi izin dasar (untuk Setelan).
  • 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 mencabut izin runtime secara otomatis untuk aplikasi yang tidak digunakan dalam jangka waktu yang lama. Aplikasi yang menargetkan SDK 30 atau yang lebih tinggi memiliki pencabutan otomatis yang diaktifkan secara default, sedangkan aplikasi yang menargetkan SDK 29 atau yang lebih rendah memiliki pencabutan otomatis yang dinonaktifkan secara default. Jika diaktifkan, pencabutan otomatis akan memengaruhi semua izin runtime, tetapi mengecualikan semua izin yang diberikan sebelumnya, termasuk izin yang ditetapkan oleh kebijakan dan sistem, serta izin yang diberikan secara default atau berdasarkan peran. Untuk mengetahui detailnya, lihat Mereset izin secara otomatis dari aplikasi yang tidak digunakan.

Format paket

Format modul PermissionController berbeda di setiap rilis.

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

  • Di Android 10, modul PermissionController dalam format 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 (project platform/packages/apps/PackageInstaller) dan frameworks/base/apex/permission (ini adalah subdirektori project frameworks/base).

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

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

OEM dapat menggunakan perintah contoh untuk membantu memindahkan patch dari direktori project asli ke direktori project baru.

Memindahkan 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 packages/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

Penyesuaian

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