Update penyimpanan di Android 11

Android 11 (API level 30) meningkatkan platform lebih lanjut, sehingga memberikan perlindungan yang lebih baik pada aplikasi dan data pengguna di penyimpanan eksternal. Rilis ini memperkenalkan beberapa peningkatan, seperti akses jalur file mentah, operasi edit batch untuk media, dan UI yang diupdate untuk Storage Access Framework.

Rilis ini juga menawarkan peningkatan pada penyimpanan terbatas, yang memudahkan developer memenuhi kasus penggunaan penyimpanan setelah bermigrasi untuk menggunakan model penyimpanan ini.

Penerapan penyimpanan terbatas

Aplikasi yang berjalan di Android 11, tetapi menargetkan Android 10 (API level 29) masih dapat meminta atribut requestLegacyExternalStorage. Flag ini memungkinkan aplikasi untuk tidak disertakan sementara dalam perubahan terkait penyimpanan terbatas, seperti memberikan akses ke berbagai direktori dan jenis file media yang berbeda. Setelah Anda mengupdate aplikasi untuk menargetkan Android 11, sistem akan mengabaikan flag requestLegacyExternalStorage.

Mempertahankan kompatibilitas dengan Android 10

Jika aplikasi Anda tidak diikutsertakan untuk menggunakan penyimpanan terbatas saat berjalan di perangkat Android 10, lanjutkan untuk menetapkan requestLegacyExternalStorage ke true dalam file manifes aplikasi. Dengan demikian, aplikasi Anda dapat terus berperilaku seperti yang diharapkan pada perangkat yang menjalankan Android 10.

Memigrasikan data ke direktori yang terlihat saat menggunakan penyimpanan terbatas

Jika aplikasi Anda menggunakan model penyimpanan lama dan sebelumnya menargetkan Android 10 atau yang lebih rendah, Anda mungkin menyimpan data dalam direktori yang tidak dapat diakses oleh aplikasi saat model penyimpanan terbatas diaktifkan. Sebelum menargetkan Android 11, migrasikan data ke direktori yang kompatibel dengan penyimpanan terbatas.

Menguji penyimpanan terbatas

Untuk mengaktifkan penyimpanan terbatas di aplikasi Anda, terlepas dari nilai flag manifes dan versi SDK targetnya, aktifkan flag kompatibilitas aplikasi berikut:

Untuk menonaktifkan penyimpanan terbatas dan menggunakan model penyimpanan lama, batalkan penetapan kedua flag.

Mengelola penyimpanan perangkat

Mulai Android 11, aplikasi yang menggunakan model penyimpanan terbatas hanya dapat mengakses file cache khusus aplikasi miliknya sendiri. Jika aplikasi perlu mengelola penyimpanan perangkat, ikuti petunjuk cara meminta kueri ruang kosong.

  1. Periksa kapasitas ruang penyimpanan yang tersedia dengan memanggil tindakan intent ACTION_MANAGE_STORAGE.
  2. Jika kapasitas ruang penyimpanan yang tersedia tidak mencukupi, minta pengguna untuk mengizinkan aplikasi Anda menghapus semua cache. Untuk melakukannya, panggil tindakan intent ACTION_CLEAR_APP_CACHE.

Direktori khusus aplikasi di penyimpanan eksternal

Mulai Android 11, aplikasi tidak dapat membuat direktori khusus aplikasi di penyimpanan eksternal. Untuk mengakses direktori yang disediakan oleh sistem untuk aplikasi Anda, panggil getExternalFilesDirs().

Akses file media

Untuk mempermudah akses media sekaligus mempertahankan privasi pengguna, Android 11 menambahkan kemampuan berikut ini.

Menjalankan operasi batch

Agar konsisten di seluruh perangkat dan demi menambah kenyamanan pengguna, Android 11 menambahkan beberapa metode yang mempermudah mengelola grup file media.

Mengakses file menggunakan jalur file langsung dan library native

Untuk membantu aplikasi Anda bekerja lebih lancar dengan library media pihak ketiga, Android 11 memungkinkan Anda menggunakan API selain MediaStore API untuk mengakses file media dari penyimpanan bersama menggunakan jalur file langsung. API ini meliputi:

  • File API.
  • Library native, seperti fopen().

Akses ke data dari aplikasi lainnya

Untuk melindungi privasi pengguna, pada perangkat yang menjalankan Android 11 atau versi yang lebih tinggi, sistem membatasi akses aplikasi Anda ke direktori pribadi aplikasi lainnya.

Akses ke direktori data pada penyimpanan internal

Android 9 (API level 28) mulai membatasi aplikasi mana yang dapat membuat file di direktori data di penyimpanan internalnya dapat diakses bebas oleh aplikasi lain. Aplikasi yang menargetkan Android 9 atau yang lebih tinggi tidak dapat membuat file dalam direktori datanya dapat diakses bebas.

Android 11 memperluas pembatasan ini. Jika aplikasi Anda menargetkan Android 11, aplikasi tidak dapat mengakses file dalam direktori data aplikasi lain, meskipun aplikasi lain menargetkan Android 8.1 (API level 27) atau yang lebih rendah dan membuat file dalam direktori datanya bisa dibaca bebas.

Akses ke direktori khusus aplikasi di penyimpanan eksternal

Di Android 11, aplikasi tidak dapat lagi mengakses file dalam direktori tetap khusus aplikasi milik aplikasi lain mana pun di penyimpanan eksternal.

Pembatasan akses dokumen

Guna memberikan waktu bagi developer untuk melakukan pengujian, perubahan terkait Storage Access Framework (SAF) berikut ini hanya berlaku jika aplikasi Anda menargetkan Android 11 atau versi yang lebih tinggi.

Akses ke direktori

Anda tidak dapat lagi menggunakan tindakan intent ACTION_OPEN_DOCUMENT_TREE untuk meminta akses ke direktori berikut:

  • Direktori utama volume penyimpanan internal.
  • Direktori utama setiap volume kartu SD yang oleh produsen perangkat dianggap dapat diandalkan, baik kartu tersebut diemulasi maupun dapat dilepas. Volume yang andal adalah volume yang sering kali dapat diakses tanpa masalah oleh aplikasi.
  • Direktori Download.

Akses ke file

Anda tidak dapat lagi menggunakan tindakan intent ACTION_OPEN_DOCUMENT_TREE atau ACTION_OPEN_DOCUMENT untuk meminta pengguna memilih file individu dari direktori berikut:

  • Direktori Android/data/ dan semua subdirektorinya.
  • Direktori Android/obb/ dan semua subdirektorinya.

Menguji perubahan

Untuk menguji perubahan perilaku ini, lakukan langkah berikut:

  1. Panggil intent dengan tindakan ACTION_OPEN_DOCUMENT. Pastikan direktori Android/data/ dan Android/obb/ tidak muncul.
  2. Lakukan salah satu langkah berikut:
  3. Panggil intent dengan tindakan ACTION_OPEN_DOCUMENT_TREE. Pastikan apakah direktori Download muncul dan tombol tindakan yang terkait dengan direktori tersebut berwarna abu-abu.

Izin

Android 11 memperkenalkan perubahan berikut ini terkait izin penyimpanan.

Menargetkan versi apa pun

Dialog pertama menampilkan link yang disebut Allow (Izinkan) di setelan
Gambar 1. Dialog yang ditampilkan saat aplikasi menggunakan penyimpanan terbatas dan meminta izin READ_EXTERNAL_STORAGE.

Perubahan berikut diberlakukan di Android 11, terlepas dari versi SDK target aplikasi Anda:

  • Izin runtime Penyimpanan diubah namanya menjadi File & Media.
  • Jika aplikasi Anda masih menggunakan penyimpanan terbatas lalu meminta izin READ_EXTERNAL_STORAGE, pengguna akan melihat dialog yang berbeda dengan yang muncul di Android 10. Dialog tersebut menunjukkan bahwa aplikasi Anda meminta akses ke foto dan media, seperti pada Gambar 1.

    Pengguna dapat melihat aplikasi yang memiliki izin READ_EXTERNAL_STORAGE di setelan sistem. Di halaman Setelan > Privasi > Pengelola izin > File dan media, setiap aplikasi yang memiliki izin akan tercantum di bagian Diizinkan untuk semua file. Jika aplikasi Anda menargetkan Android 11, perlu diingat bahwa akses ke "semua file" bersifat hanya baca. Untuk membaca dan menulis ke semua file di penyimpanan bersama menggunakan aplikasi ini, Anda harus memiliki izin akses semua file.

Menargetkan Android 11

Jika aplikasi Anda menargetkan Android 11, baik izin WRITE_EXTERNAL_STORAGE maupun izin hak istimewa WRITE_MEDIA_STORAGE tidak lagi menyediakan akses tambahan apa pun.

Perlu diingat bahwa pada perangkat yang menjalankan Android 10 (API level 29) atau yang lebih tinggi, aplikasi Anda dapat berkontribusi ke koleksi media yang ditentukan dengan baik, seperti MediaStore.Downloads, tanpa meminta izin apa pun terkait penyimpanan. Pelajari lebih lanjut cara meminta izin yang diperlukan saja saat menangani file media di aplikasi Anda.

Akses semua file

Sebagian besar aplikasi yang memerlukan akses penyimpanan bersama dapat mengikuti praktik terbaik untuk berbagi file media dan membagikan file non-media. Namun, beberapa aplikasi memiliki kasus penggunaan inti yang memerlukan akses file yang luas di perangkat, tetapi tidak dapat melakukannya secara efisien menggunakan praktik terbaik penyimpanan yang ramah privasi. Android menyediakan akses aplikasi khusus yang disebut akses Semua file untuk situasi ini. Untuk mempelajari lebih lanjut, lihat panduan cara mengelola semua file di perangkat penyimpanan.

Referensi lainnya

Untuk informasi selengkapnya tentang perubahan pada penyimpanan di Android 11, lihat materi berikut:

Postingan blog

Video