Android 11 memungkinkan pengguna menentukan izin yang lebih terperinci untuk lokasi, mikrofon, dan kamera. Selain itu, sistem akan mereset izin dari aplikasi tidak terpakai yang menargetkan Android 11 atau versi yang lebih tinggi, dan aplikasi mungkin perlu memperbarui izin yang dideklarasikannya jika menggunakan jendela notifikasi sistem atau membaca informasi nomor telepon.
Izin satu kali
Dimulai di Android 11, setiap kali aplikasi Anda meminta izin terkait lokasi, mikrofon, atau kamera, dialog izin yang dilihat pengguna akan berisi opsi yang disebut Hanya kali ini. Jika pengguna memilih opsi ini dalam dialog, aplikasi Anda akan diberi izin satu kali untuk sementara.
Pelajari lebih lanjut cara sistem menangani izin satu kali.
Mereset izin secara otomatis dari aplikasi yang tidak digunakan
Jika aplikasi Anda menargetkan Android 11 atau versi yang lebih tinggi, dan tidak digunakan selama beberapa bulan, sistem akan melindungi data pengguna dengan mereset otomatis izin waktu proses sensitif yang telah diberikan pengguna pada aplikasi Anda. Tindakan ini sama seperti jika pengguna melihat izin dalam setelan sistem dan mengubah tingkat akses aplikasi ke Tolak. Jika aplikasi sudah mengikuti praktik terbaik untuk meminta izin pada waktu proses, Anda tidak perlu melakukan perubahan apa pun pada aplikasi. Hal ini karena saat pengguna berinteraksi dengan fitur dalam aplikasi, Anda harus memverifikasi bahwa fitur tersebut memiliki izin yang dibutuhkannya.
Pelajari lebih lanjut cara sistem mereset izin aplikasi yang tidak digunakan secara otomatis.
Visibilitas dialog izin
Dimulai di Android 11, jika pengguna mengetuk Tolak untuk izin tertentu lebih dari sekali selama masa aktif penginstalan aplikasi di perangkat, pengguna tidak akan melihat dialog izin sistem jika aplikasi meminta lagi izin tersebut. Tindakan pengguna menyiratkan "jangan tanya lagi". Pada versi sebelumnya, pengguna akan melihat dialog izin sistem setiap kali aplikasi Anda meminta izin, kecuali pengguna telah terlebih dahulu memilih kotak centang "jangan tanya lagi". Perubahan perilaku ini di Android 11 tidak menganjurkan permintaan izin berulang yang telah ditolak pengguna.
Untuk mengidentifikasi apakah izin aplikasi telah ditolak secara permanen (untuk tujuan proses debug dan pengujian), gunakan perintah berikut:
adb shell dumpsys package PACKAGE_NAME
Dengan PACKAGE_NAME adalah nama paket yang akan diperiksa.
Output perintah berisi bagian yang terlihat seperti ini:
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
Izin yang telah ditolak sekali oleh pengguna ditandai oleh USER_SET
.
Izin yang telah ditolak secara permanen dengan memilih Tolak dua kali
ditandai oleh USER_FIXED
.
Selama pengujian, sebaiknya setel ulang tanda ini untuk memastikan bahwa penguji tidak terkejut ketika dialog permintaan tidak ditampilkan. Untuk melakukannya, gunakan perintah:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME adalah nama izin yang ingin Anda reset. Untuk melihat daftar lengkap izin aplikasi Android, kunjungi API izin halaman referensi.
Pelajari lebih lanjut cara menangani penolakan izin di aplikasi.
Perubahan jendela notifikasi sistem
Android 11 membuat beberapa perubahan pada cara aplikasi mendapatkan izin SYSTEM_ALERT_WINDOW
. Perubahan tersebut dimaksudkan untuk melindungi pengguna dengan membuat pemberian izin
menjadi lebih intensional.
Aplikasi tertentu akan mendapatkan izin SYSTEM_ALERT_WINDOW secara otomatis jika diminta
Class aplikasi tertentu akan mendapatkan izin SYSTEM_ALERT_WINDOW
secara otomatis jika diminta.
Semua aplikasi yang memiliki
ROLE_CALL_SCREENING
dan memintaSYSTEM_ALERT_WINDOW
akan mendapatkan izin secara otomatis. Jika aplikasi kehilanganROLE_CALL_SCREENING
, izin juga akan hilang.Semua aplikasi yang mengambil gambar atau merekam video layar melalui
MediaProjection
dan permintaanSYSTEM_ALERT_WINDOW
akan mendapatkan izin secara otomatis, kecuali pengguna telah menolak izin ke aplikasi secara eksplisit. Jika aplikasi berhenti mengambil gambar atau merekam video layar, izin juga akan hilang. Kasus penggunaan ini utamanya ditujukan pada aplikasi live streaming game.
Aplikasi ini tidak perlu mengirimkan
ACTION_MANAGE_OVERLAY_PERMISSION
untuk mendapatkan izin SYSTEM_ALERT_WINDOW
; aplikasi dapat meminta
SYSTEM_ALERT_WINDOW
secara langsung.
Intent MANAGE_OVERLAY_PERMISSION selalu mengarahkan pengguna ke layar izin sistem
Mulai dari Android 11, intent
ACTION_MANAGE_OVERLAY_PERMISSION
selalu membawa pengguna ke layar Setelan level atas di mana
pengguna dapat memberikan atau mencabut izin
SYSTEM_ALERT_WINDOW
untuk aplikasi. Semua data package:
dalam intent akan diabaikan.
Pada versi Android sebelumnya, intent ACTION_MANAGE_OVERLAY_PERMISSION
dapat menentukan paket, yang akan mengarahkan pengguna ke layar khusus aplikasi
untuk mengelola izin. Fungsi ini tidak didukung untuk Android 11. Sebagai gantinya, pengguna harus memilih aplikasi yang ingin
diberi izin atau cabut izinnya terlebih dahulu. Perubahan ini dimaksudkan untuk melindungi pengguna
dengan membuat pemberian izin menjadi lebih intensional.
Nomor telepon
Android 11 mengubah izin terkait ponsel yang digunakan aplikasi Anda saat membaca nomor telepon.
Jika aplikasi Anda menargetkan Android 11 atau versi yang lebih tinggi, dan perlu mengakses API nomor
telepon yang ditampilkan di daftar berikut, Anda harus meminta izin
READ_PHONE_NUMBERS
,
bukan izin READ_PHONE_STATE
.
- Metode
getLine1Number()
di classTelephonyManager
dan classTelecomManager
. - Metode
getMsisdn()
yang tidak didukung di classTelephonyManager
.
Jika aplikasi mendeklarasikan READ_PHONE_STATE
untuk memanggil metode selain metode yang ada di
daftar sebelumnya, Anda dapat terus meminta READ_PHONE_STATE
di semua
versi Android. Jika Anda menggunakan izin READ_PHONE_STATE
hanya untuk
metode yang ada di daftar sebelumnya, update file manifes Anda seperti berikut:
- Ubah deklarasi
READ_PHONE_STATE
agar aplikasi hanya menggunakan izin di Android 10 (API level 29) dan versi yang lebih rendah. - Tambahkan izin
READ_PHONE_NUMBERS
.
Cuplikan deklarasi manifes berikut menunjukkan proses ini:
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
Referensi lainnya
Untuk informasi selengkapnya tentang perubahan izin di Android 11, lihat materi berikut:
Video
Melakukan pengembangan dengan perubahan privasi terbaru di Android 11