Modul Mainline PermissionController berisi kebijakan privasi dan UI yang terkait dengan pemberian dan pengelolaan izin (misalnya, kebijakan dan UI untuk memberikan dan mengelola izin).
Tentang PermissionController
Modul PermissionController menangani UI, logika, dan peran terkait izin untuk mengizinkan akses aplikasi untuk tujuan tertentu. Fitur ini mengontrol hal berikut:
- Pemberian izin runtime (termasuk pemberian ke aplikasi sistem)
- Pengelolaan izin runtime (termasuk pengelompokan izin)
- Pelacakan penggunaan izin runtime
- Peran
Mulai Android 12, class server sistem dan framework
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 diupdate, 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
.
Cabut otomatis untuk aplikasi yang tidak digunakan
Di Android 11, modul PermissionsController dapat otomatis mencabut izin runtime untuk aplikasi yang tidak digunakan dalam jangka waktu yang lama. Aplikasi yang menargetkan SDK 30 atau yang lebih tinggi memiliki pencabutan otomatis diaktifkan secara default, sedangkan aplikasi yang menargetkan SDK 29 atau yang lebih rendah memiliki pencabutan otomatis dinonaktifkan secara default. Jika diaktifkan, pencabutan otomatis akan memengaruhi semua izin runtime, tetapi 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 Mereset otomatis izin dari aplikasi yang tidak digunakan.
Format paket
Format modul PermissionController berbeda-beda di antara rilis.
Di Android 11 atau yang lebih tinggi, modul PermissionController 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 dari
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 mereka dari direktori project asli ke direktori project baru.
Memindahkan patch dari framework/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
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).