PengontrolIzin

Modul Utama PermissionController berisi kebijakan privasi dan UI yang terkait dengan memberikan dan mengelola izin (misalnya, kebijakan dan UI untuk memberikan dan mengelola izin).

Tentang PermissionController

Modul PermissionController menangani UI, logika, dan peran terkait izin untuk mengizinkan akses bagi aplikasi untuk tujuan tertentu. Kode ini mengontrol hal-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, framework dan server sistem kelas untuk Role dipindahkan ke modul untuk menjadikan Role sepenuhnya modular.

Di Android 10, aplikasi Package Installer dibagi menjadi beberapa bagian untuk memungkinkan logika izin diperbarui. Sebagai seorang Modul Mainline yang dapat diperbarui, PermissionController:

  • Berinteraksi dengan framework hanya melalui @SystemApi yang stabil (tidak ada penggunaan @hide API).
  • Menangani intent terkait izin dengan prioritas > 0.
  • Mengekspos mekanisme untuk memungkinkan OEM 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 otomatis mencabut izin runtime untuk aplikasi yang belum digunakan yang lebih lama. Aplikasi yang menargetkan SDK 30 atau yang lebih tinggi memiliki pencabutan otomatis diaktifkan secara default, sementara aplikasi yang menargetkan SDK 29 atau yang lebih rendah memiliki pencabutan otomatis dinonaktifkan secara default. Jika diaktifkan, pencabutan otomatis akan memengaruhi semua runtime izin tapi membebaskan semua izin yang telah diberikan sebelumnya, termasuk izin yang ditetapkan oleh sistem dan izin yang diberikan secara {i>default<i} atau peran. Sebagai lihat detail selengkapnya, lihat Mereset otomatis izin dari aplikasi yang tidak digunakan aplikasi.

Format paket

Format modul PermissionController berbeda-beda di setiap rilis.

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

  • Di Android 10, modul PermissionController dalam format APK dan tidak dapat diperbarui. Nama paketnya adalah com.google.android.permissioncontroller.

Batas modul

Di Android 12, Izin kode modul dipindahkan dari packages/apps/PermissionController (project platform/packages/apps/PackageInstaller) dan frameworks/base/apex/permission (ini adalah subdirektori dari 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 contoh perintah untuk membantu memindahkan patch mereka dari direktori proyek asli ke direktori proyek baru.

Memindahkan patch dari framework/dasar/apex/izin

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

Memindahkan patch dari paket/aplikasi/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).