Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

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 pindah aplikasi Android yang membutuhkan izin berbahaya (lihat izin yang Terkena Dampak ) dari instalasi-time model izin untuk model runtime izin:

  • Izin waktu penginstalan

    (Android 5.1 dan lebih rendah) Pengguna memberikan izin berbahaya untuk aplikasi ketika 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 untuk sebuah 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 yang aplikasi memiliki pengenalan aktivitas (AR) hak akses runtime. Pengguna diminta oleh hak akses runtime dialog baik selalu memungkinkan, memungkinkan saat digunakan, atau menolak izin. Pada OS upgrade ke Android 10, perizinan yang diberikan kepada aplikasi dipertahankan, namun pengguna dapat masuk ke Settings dan mengubah mereka.

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 meminta akses aplikasi ke data pengguna pribadi, atau kontrol atas perangkat, yang dapat berdampak negatif terhadap pengguna. Untuk melihat daftar izin berbahaya, jalankan perintah:

adb shell pm list permissions -g -d

Android 6.0 dan lebih tinggi tidak mengubah perilaku perizinan yang normal . Ini semua adalah izin yang tidak berbahaya termasuk izin normal, sistem, dan tanda tangan. Hak akses normal izin-resiko yang lebih rendah (seperti SET_WALLPAPER ) yang memberikan meminta akses aplikasi ke aplikasi-tingkat terisolasi fitur dengan risiko minimal untuk 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 rincian tentang perizinan, melihat <izin> elemen dokumentasi.

Pembatasan keras dan lunak di Android 10

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

  • (Hard pembatasan) Apps tidak dapat diberikan hak akses yang tidak masuk daftar putih.
  • (Pembatasan Lembut) Apps tanpa daftar putih 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 memasukkan izin terbatas untuk aplikasi tersebut ke daftar putih. 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 putih terjadi selama instalasi, 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 memasukkan izin ke daftar putih.
  • penginstal (seperti Google Play Store) menandai izin sebagai daftar putih.

Pengguna tidak dapat memasukkan izin ke daftar putih 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 rincian, lihat aplikasi Updating . Pengecualian terbatas dapat diberikan ke aplikasi dan penangan default yang menyediakan fungsionalitas perangkat dasar yang mendasar untuk pengoperasian perangkat yang diharapkan. (Sebagai contoh, standar Dialer aplikasi perangkat untuk menangani ACTION_CALL mungkin memiliki akses izin Telepon.) Untuk detail, 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 rincian, lihat aplikasi Headless .

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 masuk daftar putih. Untuk rincian tentang pelaksanaan hak akses perpecahan foreground / latar belakang, melihat Android 10 perubahan privasi , dimulai dengan lokasi Permintaan 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 penangan default / penyedia untuk fungsionalitas inti, menentukan hak akses kustom, dan menyesuaikan tema yang digunakan dalam PermissionController aplikasi.

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 terinstal aplikasi (OEM, operator, dan pihak ketiga) untuk membuat modifikasi aplikasi yang dibutuhkan dengan 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, aliran UI selama instalasi aplikasi tidak harus menyimpang dari pelaksanaan 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 tahun 10, instalasi aliran (dilakukan oleh Package Installer aplikasi) adalah fungsi terpisah dari izin yang memberikan (dalam Permission Controller aplikasi).

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 pengguna yang membingungkan dengan permintaan izin yang muncul di luar konteks.

Menyesuaikan UI PackageInstaller

Jika diinginkan, Anda dapat menyesuaikan tema Izin 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 menyertakan string untuk bahasa tambahan, berkontribusi string untuk AOSP.

Membuat pengecualian

Anda dapat pre-hibah izin untuk aplikasi yang penangan bawaan atau penyedia untuk fungsi inti OS menggunakan DefaultPermissionGrantPolicy.java kelas 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 hak akses adat dan kelompok sebagai normal atau berbahaya dan menambahkan izin OEM / Carrier-spesifik untuk kelompok perizinan yang ada, seperti yang Anda bisa dalam 5.x Android 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.