Memberikan akses sebagian ke foto dan video

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 dan READ_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 izin READ_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 dan READ_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 izin READ_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:

  1. Aplikasi Anda diinstal di perangkat yang menjalankan Android 13.
  2. Pengguna telah memberikan izin READ_MEDIA_IMAGES dan izin READ_MEDIA_VIDEO ke aplikasi Anda.
  3. 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:

  1. Aplikasi Anda diinstal di perangkat yang menjalankan Android 13.
  2. Pengguna telah memberikan izin READ_EXTERNAL_STORAGE atau izin WRITE_EXTERNAL_STORAGE ke aplikasi Anda.
  3. 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 menggunakan ContentResolver, 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.