Izin Waktu Proses

Di Android 6.0 dan yang lebih tinggi, model izin aplikasi Android dirancang untuk membuat izin lebih mudah dipahami, berguna, dan aman bagi pengguna. Model memindahkan aplikasi Android yang memerlukan izin berbahaya (lihat Izin yang terpengaruh ) dari model izin waktu penginstalan ke model izin waktu proses:

  • Izin waktu penginstalan

    ( Android 5.1 dan lebih rendah ) Pengguna memberikan izin berbahaya ke aplikasi saat mereka menginstal atau memperbarui aplikasi. Produsen dan operator perangkat dapat melakukan pra-instal aplikasi dengan izin yang telah diberikan sebelumnya tanpa memberi tahu pengguna.

  • Izin waktu proses

    ( Android 6.0 – 9 ) Pengguna memberikan izin berbahaya ke aplikasi saat aplikasi sedang berjalan. Saat izin diminta (seperti saat aplikasi diluncurkan atau saat pengguna mengakses fitur tertentu) bergantung pada aplikasi, namun pengguna memberikan/menolak akses aplikasi ke grup izin tertentu. OEM/operator dapat menginstal aplikasi sebelumnya, tetapi tidak dapat memberikan izin kecuali mereka melalui proses pengecualian. (Lihat Membuat pengecualian .)

    ( Android 10 ) Pengguna melihat peningkatan transparansi dan memiliki kontrol atas aplikasi mana yang memiliki izin waktu proses pengenalan aktivitas (AR). Pengguna diminta oleh dialog izin waktu proses untuk selalu mengizinkan, mengizinkan saat digunakan, atau menolak izin. Pada peningkatan OS ke Android 10, izin yang diberikan ke aplikasi dipertahankan, tetapi pengguna dapat masuk ke Pengaturan dan mengubahnya.

Izin runtime mencegah aplikasi mendapatkan akses ke data pribadi tanpa persetujuan pengguna, dan memberi mereka konteks dan visibilitas tambahan ke dalam jenis izin yang dicari, atau telah diberikan oleh aplikasi. Model runtime mendorong pengembang untuk membantu pengguna memahami mengapa aplikasi memerlukan izin yang diminta, dan memberikan transparansi yang lebih besar sehingga pengguna dapat membuat keputusan yang lebih baik tentang memberikan atau menolaknya.

Izin yang terpengaruh

Android 6.0 dan yang lebih tinggi memerlukan izin berbahaya untuk menggunakan model izin waktu proses. Izin berbahaya adalah izin berisiko tinggi (seperti READ_CALENDAR ) yang memberikan aplikasi yang meminta akses ke data pengguna pribadi, atau kontrol atas perangkat, yang dapat berdampak negatif pada pengguna. Untuk melihat daftar izin berbahaya, jalankan perintah:

adb shell pm list permissions -g -d

Android 6.0 dan lebih tinggi tidak mengubah perilaku izin normal . Ini semua adalah izin yang tidak berbahaya termasuk izin normal, sistem, dan tanda tangan. Izin normal adalah izin berisiko rendah (seperti SET_WALLPAPER ) yang memberikan aplikasi yang meminta akses ke fitur tingkat aplikasi yang terisolasi dengan risiko minimal terhadap aplikasi lain, sistem, atau pengguna. Seperti pada Android 5.1 dan rilis yang lebih rendah, sistem secara otomatis memberikan izin normal ke aplikasi yang meminta saat penginstalan dan tidak meminta persetujuan pengguna. Untuk detail tentang izin, lihat dokumentasi elemen <permission> .

Pembatasan keras dan lunak di Android 10

Selain berbahaya, izin dapat berupa hard-restricted atau soft-restricted. Dalam kedua kasus, izin terbatas juga harus diizinkan. Pembatasan keras yang tidak diizinkan berperilaku berbeda dari pembatasan lunak yang tidak diizinkan:

  • ( Pembatasan keras ) Aplikasi tidak dapat diberikan izin yang tidak diizinkan.
  • ( Pembatasan lunak ) Aplikasi tanpa daftar yang diizinkan berperilaku sesuai dengan izin khusus yang mereka minta. Perilaku dijelaskan dalam dokumentasi publik untuk izin yang diminta.

Saat memasang aplikasi, penginstal (seperti Google Play Store) dapat memilih untuk tidak mengizinkan izin terbatas untuk aplikasi tersebut. Izin dibatasi oleh platform dan hanya dapat diberikan jika aplikasi memenuhi kriteria khusus per kebijakan platform. Contoh jenis izin yang dibatasi secara ketat termasuk izin SMS dan Log Panggilan.

Daftar yang diizinkan terjadi selama penginstalan, dan ketika

  • aplikasi sudah diinstal selama peningkatan versi Android 9-ke-10.
  • izin diberikan sebelumnya atau aplikasi telah diinstal sebelumnya.
  • izin diperlukan untuk peran yang sudah ditentukan untuk mengizinkan izin.
  • penginstal (seperti Google Play Store) menandai izin sebagai diizinkan.

Pengguna tidak dapat memasukkan izin secara manual.

Persyaratan

Model izin waktu proses berlaku untuk semua aplikasi, termasuk aplikasi pra-instal dan aplikasi yang dikirimkan ke perangkat sebagai bagian dari proses penyiapan. Persyaratan perangkat lunak aplikasi meliputi:

  • Model izin waktu proses harus konsisten di semua perangkat yang menjalankan Android 6.0 dan lebih tinggi. Ini diterapkan oleh pengujian Android Compatibility Test Suite (CTS).
  • Aplikasi harus meminta pengguna untuk memberikan izin aplikasi pada waktu proses. Untuk detailnya, lihat Memperbarui aplikasi . Pengecualian terbatas dapat diberikan ke aplikasi dan penangan default yang menyediakan fungsionalitas perangkat dasar yang mendasar untuk pengoperasian perangkat yang diharapkan. (Misalnya, aplikasi Pemanggil default perangkat untuk menangani ACTION_CALL mungkin memiliki akses izin Telepon.) Untuk detailnya, lihat Membuat pengecualian .
  • Aplikasi yang dimuat sebelumnya yang memiliki izin berbahaya harus menargetkan API level 23 dan mempertahankan model izin waktu proses. Artinya, alur UI selama penginstalan aplikasi tidak boleh menyimpang dari implementasi AOSP dari PermissionController, pengguna dapat mencabut izin berbahaya dari aplikasi yang telah diinstal sebelumnya, dan seterusnya.
  • Aplikasi tanpa kepala harus menggunakan aktivitas untuk meminta izin atau berbagi UID dengan aplikasi lain yang memiliki izin yang diperlukan. Untuk detailnya, lihat Aplikasi tanpa kepala .

Migrasi izin

Izin yang diberikan untuk aplikasi di Android 5.x tetap diberikan setelah memperbarui ke Android 6.0 atau lebih tinggi, tetapi pengguna dapat mencabut izin tersebut kapan saja.

Dalam pembaruan Android 9-ke-10, semua izin yang dibatasi secara ketat akan diizinkan. Untuk detail tentang penerapan izin pemisahan latar depan/latar belakang, lihat Perubahan privasi Android 10 , dimulai dengan Meminta lokasi latar belakang .

Integrasi

Saat mengintegrasikan model izin waktu proses aplikasi untuk Android 6.0 dan lebih tinggi, Anda harus memperbarui aplikasi prainstal agar berfungsi dengan model baru. Anda juga dapat menentukan pengecualian untuk aplikasi yang merupakan penangan/penyedia default untuk fungsionalitas inti, menentukan izin khusus, dan menyesuaikan tema yang digunakan dalam aplikasi PermissionController .

Memperbarui aplikasi

Aplikasi pada citra sistem dan aplikasi yang telah diinstal sebelumnya tidak secara otomatis diberikan izin sebelumnya. Kami mendorong Anda untuk bekerja dengan pengembang aplikasi yang telah diinstal sebelumnya (OEM, operator, dan pihak ketiga) untuk membuat modifikasi aplikasi yang diperlukan menggunakan pedoman pengembang . Secara khusus, Anda harus memastikan bahwa aplikasi prainstal dimodifikasi untuk menghindari crash dan masalah lain saat pengguna mencabut izin.

Aplikasi yang dimuat sebelumnya

Di Android 9 dan yang lebih rendah, aplikasi yang dimuat sebelumnya yang menggunakan izin berbahaya harus menargetkan API level 23 atau lebih tinggi, dan mempertahankan model izin AOSP Android 6.0 dan yang lebih tinggi. Misalnya, alur UI selama penginstalan aplikasi tidak boleh menyimpang dari implementasi AOSP dari PermissionController . Pengguna bahkan dapat mencabut izin berbahaya dari aplikasi yang sudah diinstal sebelumnya.

Di Android 6.0 hingga 9, beberapa izin diberikan selama alur penginstalan. Namun, mulai 10, alur penginstalan (dilakukan oleh aplikasi Package Installer ) adalah fungsi terpisah dari pemberian izin (di aplikasi Permission Controller ).

Aplikasi tanpa kepala

Hanya aktivitas yang dapat meminta izin. Layanan tidak dapat meminta izin secara langsung.

  • Di Android 5.1 dan versi lebih lama, aplikasi tanpa kepala dapat meminta izin saat diinstal, atau jika sudah diinstal sebelumnya tanpa menggunakan aktivitas.
  • Di Android 6.0 dan yang lebih tinggi, aplikasi tanpa kepala harus menggunakan salah satu metode berikut untuk meminta izin:
    • Tambahkan aktivitas untuk meminta izin. (Ini adalah metode yang disukai.)
    • Bagikan UID dengan aplikasi lain yang memiliki izin yang diperlukan. Gunakan metode ini hanya jika Anda membutuhkan platform untuk menangani beberapa APK sebagai satu aplikasi.

Tujuannya adalah untuk menghindari kebingungan pengguna dengan permintaan izin yang muncul di luar konteks.

Menyesuaikan UI PackageInstaller

Jika diinginkan, Anda dapat menyesuaikan tema Permissions UI dengan memperbarui tema perangkat default ( Theme.DeviceDefault.Settings dan Theme.DeviceDefault.Light.Dialog.NoActionBar ) yang digunakan oleh PackageInstaller. Namun, karena konsistensi sangat penting bagi pengembang aplikasi, Anda tidak dapat menyesuaikan penempatan, posisi, dan aturan kapan UI Izin muncul.

Untuk memasukkan string untuk bahasa tambahan, kontribusikan string ke AOSP.

Membuat pengecualian

Anda dapat memberikan izin sebelumnya ke aplikasi yang merupakan penangan atau penyedia default untuk fungsionalitas inti OS menggunakan kelas DefaultPermissionGrantPolicy.java di PackageManager. Contoh:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

Menentukan izin khusus

Anda dapat menentukan izin khusus dan grup sebagai normal atau berbahaya dan menambahkan izin khusus OEM/Operator ke grup izin yang ada, seperti yang dapat Anda lakukan di Android 5.x dan rilis sebelumnya.

Di Android 6.0 dan yang lebih baru, jika Anda menambahkan izin berbahaya baru, izin tersebut harus ditangani dengan cara yang sama seperti izin berbahaya lainnya (diminta selama waktu proses aplikasi dan dapat dibatalkan oleh pengguna). Secara khusus:

  • Anda dapat menambahkan izin baru ke grup saat ini, tetapi Anda tidak dapat mengubah pemetaan AOSP dari izin berbahaya dan grup izin berbahaya. (Dengan kata lain, Anda tidak dapat menghapus izin dari grup dan menetapkan ke grup lain).
  • Anda dapat menambahkan grup izin baru dalam aplikasi yang diinstal pada perangkat, tetapi Anda tidak dapat menambahkan grup izin baru di manifes platform.

Izin pengujian

Android menyertakan pengujian Compatibility Test Suite (CTS) yang memverifikasi izin individu yang dipetakan ke grup yang benar. Lulus tes ini merupakan persyaratan untuk kompatibilitas CTS Android 6.0 dan yang lebih baru.