Pengguna yang berinteraksi dengan aplikasi Anda di perangkat Android 14 kini dapat memberikan akses
parsial ke library media visual (Foto/Video) mereka saat aplikasi meminta
izin media visual apa pun (READ_MEDIA_IMAGES
atau READ_MEDIA_VIDEO
) yang diperkenalkan
di Android 13 (API level 33).
Dialog baru berisi opsi berikut:
- Pilih foto dan video: Baru di Android 14. Pengguna memilih foto dan video tertentu yang ingin mereka sediakan untuk aplikasi Anda.
- Izinkan semua: Pengguna memberikan akses library penuh ke semua foto dan video di perangkat.
- Jangan izinkan: Pengguna menolak semua akses.
Jika pengguna memilih Pilih foto dan video, lalu aplikasi Anda meminta
READ_MEDIA_IMAGES
atau READ_MEDIA_VIDEO
lagi, sistem akan menampilkan dialog
yang berbeda, sehingga pengguna memiliki kesempatan untuk memberikan akses ke foto dan
video tambahan.
Untuk membantu aplikasi mendukung perubahan baru, sistem memperkenalkan izin baru,
READ_MEDIA_VISUAL_USER_SELECTED
.
Pengaruh mendeklarasikan izin baru
Jika Anda mendeklarasikan izin READ_MEDIA_VISUAL_USER_SELECTED
, dan pengguna
memilih Pilih foto dan video di dialog izin sistem, perilaku
berikut akan terjadi:
- Izin
READ_MEDIA_IMAGES
danREAD_MEDIA_VIDEO
ditolak. - Izin
READ_MEDIA_VISUAL_USER_SELECTED
diberikan, sehingga memberikan akses sebagian dan sementara ke foto dan video pengguna. - Jika aplikasi memerlukan akses ke foto dan video lain, Anda harus
meminta izin
READ_MEDIA_IMAGES
atau izinREAD_MEDIA_VIDEO
(atau kedua izin) lagi secara manual.
Perlu diingat bahwa READ_MEDIA_IMAGES
dan READ_MEDIA_VIDEO
adalah satu-satunya izin
lain yang diperlukan untuk mengakses galeri foto dan video pengguna.
Mendeklarasikan READ_MEDIA_VISUAL_USER_SELECTED
akan membuat pengontrol izin
mengetahui bahwa aplikasi Anda mendukung permintaan ulang manual untuk memilih foto dan
video lainnya.
Untuk mencegah pengguna melihat beberapa kotak dialog runtime sistem, minta
izin READ_MEDIA_VISUAL_USER_SELECTED
, ACCESS_MEDIA_LOCATION
, dan "baca media"
(READ_MEDIA_IMAGES
, READ_MEDIA_VIDEO
, atau keduanya) dalam sebuah
operasi.
Akibat tidak mendeklarasikan izin baru
Jika Anda tidak mendeklarasikan izin READ_MEDIA_VISUAL_USER_SELECTED
,
perilaku berikut akan terjadi:
- Izin
READ_MEDIA_IMAGES
danREAD_MEDIA_VIDEO
diberikan selama sesi aplikasi, yang menyediakan pemberian izin sementara dan akses sementara ke foto dan video yang dipilih pengguna. Saat aplikasi Anda berpindah ke latar belakang, atau saat pengguna secara aktif menghentikan aplikasi Anda, sistem pada akhirnya akan menolak izin ini. Perilaku ini seperti izin satu kali lainnya. - Jika aplikasi Anda memerlukan akses ke foto dan video tambahan di lain waktu,
Anda harus meminta izin
READ_MEDIA_IMAGES
atau izinREAD_MEDIA_VIDEO
lagi secara manual. Sistem mengikuti alur yang sama dengan permintaan izin awal, yang meminta pengguna untuk memilih foto dan video.
Akses foto dan video tetap dipertahankan saat perangkat diupgrade
Jika aplikasi Anda berada di perangkat yang diupgrade dari versi Android sebelumnya ke Android 14, sistem akan memiliki akses penuh ke foto dan video pengguna, serta memberikan beberapa izin ke aplikasi Anda secara otomatis. Perilaku yang tepat bergantung pada sekumpulan izin yang diberikan ke aplikasi Anda sebelum perangkat diupgrade ke Android 14.
Izin dari Android 13
Pertimbangkan situasi berikut:
- Aplikasi Anda diinstal di perangkat yang menjalankan Android 13.
- Pengguna telah memberikan izin
READ_MEDIA_IMAGES
dan izinREAD_MEDIA_VIDEO
ke aplikasi Anda. - Perangkat kemudian diupgrade ke Android 14 saat aplikasi Anda masih terinstal.
Dalam hal ini, aplikasi Anda masih memiliki akses penuh ke foto dan video pengguna.
Sistem juga mempertahankan izin READ_MEDIA_IMAGES
dan READ_MEDIA_VIDEO
yang diberikan ke aplikasi Anda secara otomatis.
Izin dari Android 12 dan yang lebih rendah
Pertimbangkan situasi berikut:
- Aplikasi Anda diinstal di perangkat yang menjalankan Android 13.
- Pengguna telah memberikan izin
READ_EXTERNAL_STORAGE
atau izinWRITE_EXTERNAL_STORAGE
ke aplikasi Anda. - Perangkat kemudian diupgrade ke Android 14 saat aplikasi Anda masih terinstal.
Dalam hal ini, aplikasi Anda masih memiliki akses penuh ke foto dan video pengguna.
Sistem juga memberikan izin READ_MEDIA_IMAGES
dan
izin READ_MEDIA_VIDEO
ke aplikasi Anda secara otomatis.
Praktik terbaik
Bagian ini berisi beberapa praktik terbaik untuk menggunakan
izin READ_MEDIA_VISUAL_USER_SELECTED
.
Pemrosesan media di latar belakang pada dasarnya memerlukan izin baru
Jika aplikasi melakukan pemrosesan media, seperti mengompresi atau mengupload media di
latar belakang, perlu diingat bahwa status izin READ_MEDIA_IMAGES
dan READ_MEDIA_VIDEO
pada akhirnya akan ditolak lagi. Kami sangat merekomendasikan Anda
menambahkan dukungan untuk READ_MEDIA_VISUAL_USER_SELECTED
. Atau, aplikasi Anda
harus memeriksa apakah memiliki akses ke foto atau video tertentu dengan membuka
InputStream
atau membuat kueri menggunakan ContentResolver
.
Jangan simpan status izin secara permanen
Jangan simpan status izin secara permanen, termasuk
SharedPreferences
atau DataStore
. Status yang disimpan mungkin tidak disinkronkan dengan
status sebenarnya. Status izin dapat berubah setelah reset izin,
hibernasi aplikasi, perubahan yang dimulai pengguna di setelan aplikasi Anda, atau ketika
aplikasi beralih ke latar belakang. Sebagai gantinya, periksa izin penyimpanan menggunakan
ContextCompat.checkSelfPermission()
.
Jangan berasumsi memiliki akses penuh ke foto dan video
Berdasarkan perubahan yang diperkenalkan di Android 14, aplikasi Anda mungkin hanya memiliki
akses sebagian ke galeri foto perangkat. Jika aplikasi meng-cache data MediaStore
saat dikueri menggunakan ContentResolver
, cache tersebut mungkin tidak diperbarui.
- Selalu buat kueri
MediaStore
menggunakanContentResolver
, bukan mengandalkan cache yang disimpan. - Simpan hasilnya di memori saat aplikasi Anda berada di latar depan.
Perlakukan akses URI sebagai sementara
Jika pengguna memilih Pilih foto dan video dalam dialog
izin sistem, akses aplikasi Anda ke foto dan video yang dipilih tidak akan berlaku lagi
pada akhirnya. Aplikasi Anda harus selalu menangani kasus ketika tidak memiliki akses ke
Uri
apa pun, terlepas dari otoritasnya.